Re: [問題] Fagment 畫面切換問題
之前也有遇到一模一樣的問題
GOOGLE了挺久又把supportv4.TabManager、TabHost一行一行看
推得的結論是support包的bug(猜測~)
修改方式:
TabManager中將約第90行的
ft.add(mContainerId, newTab.fragment, newTab.tag);
註解掉。
上下文:
if (newTab != null) {
newTab.fragment = Fragment.instantiate(mActivity,
newTab.clss.getName(), newTab.args);
ft.add(mContainerId, newTab.fragment, newTab.tag);
if (newTab.fragment == null) {
ft.detach(mLastTab.fragment);
} else {
mActivity.getSupportFragmentManager().popBackStack();
ft.replace(mContainerId, newTab.fragment);
ft.attach(newTab.fragment);
}
------------------------------------------------------------------------
推測原因說明:
FragmentTransaction ft有replace、add函式,
而replace包含的功能有remove和add,
且若add同一個fragment兩次就會跳出如你的錯誤訊息。
看你的code註解掉的那行是一行add,
往下數5行是replace,
在你會當掉的那個動作這兩個函式都會用到,
但已經add過了因此會在replace的地方崩潰~
雖然之前沒看到官方正式的bug通知或更新,
不過在網路上有看到好像就是在說這是bug的英文討論(英文差-.-)
我註解掉後使用上也完全沒有問題
請嘗試後放心使用囉=ˇ=
※ 引述《loveyoualway (瘋子)》之銘言:
: 我有一個 FragmentActivity 加了2個頁籤 A.class 和 B.class
: mTabManager.addTab(getmTabHost().newTabSpec("Fragment1").setIndicator("A",this.getResources().getDrawable(R.drawable.tabbar1)),
: A.class, null);
: mTabManager.addTab(getmTabHost().newTabSpec("Fragment2").setIndicator("B",this.getResources().getDrawable(R.drawable.tabbar2)),
: B.class, null);
: 當我在 A.class裡面 在設置跳到另一個fragment C.class
: button.setOnClickListener(new OnClickListener(){
: @Override
: public void onClick(View v)
: Fragment newFragment = new C();
: android.support.v4.app.FragmentTransaction ft = getActivity()
: .getSupportFragmentManager().beginTransaction();
: ft.replace(R.id.realtabcontent, newFragment);
: ft.setTransition(FragmentTransaction.TRANSIT_NONE);
: ft.addToBackStack(null);
: ft.commit();
: }
: });
: 以上都正常 但是跳至C.class後 又按頁籤B 他就會出現錯誤
: java.lang.IllegalStateException: Fragment already added: imformation{40dc8148
: #3 id=0x1010000 Fragment2}
: 請問這如何解壓 有大大碰到這樣情況過嗎????
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.251.167
推
04/22 12:47, , 1F
04/22 12:47, 1F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):