Re: [問題] Fagment 畫面切換問題

看板AndroidDev作者 (唐唐)時間12年前 (2013/04/20 23:14), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
之前也有遇到一模一樣的問題 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
文章代碼(AID): #1HSh3j7I (AndroidDev)
文章代碼(AID): #1HSh3j7I (AndroidDev)