2015-08-24 84 views
0

我有3個標籤,每個標籤都有一個片段。使用這些類似的方法從一個切換到另一個時。第一次是正常工作,並通過標籤找到片段,但第二次找不到它,當它嘗試添加片段時有趣的是我錯誤java.lang.IllegalStateException: Fragment already added:所以片段肯定是在那裏。第二次找不到標籤片段

private void selectedSocialTab() { 
      if (!mSocialTab.isSelected()) { 
       mSocialTab.setSelected(true); 
       mProfileTab.setSelected(false); 
       mPlacesTab.setSelected(false); 
       if (!getResources().getBoolean(R.bool.make_grid)) { 
        FragmentManager manager = getFragmentManager(); 
        Fragment frag = manager.findFragmentByTag("social"); 
        if (frag == null) { 
         FragmentTransaction trans = getFragmentManager().beginTransaction(); 
         trans.add(FRAGMENT_PLACE_RESOURCES, SocialScreenFragment.newInstance(), "social"); 
         trans.commit(); 
         Toast.makeText(mCtx, "NULL-social", Toast.LENGTH_SHORT).show(); 
        } else { 
         Toast.makeText(mCtx, "NOT NULL-social", Toast.LENGTH_SHORT).show(); 
         FragmentTransaction trans = getFragmentManager().beginTransaction(); 
         trans.replace(FRAGMENT_PLACE_RESOURCES, frag); 
         trans.commit(); 
        } 

       } else if (getResources().getBoolean(R.bool.make_grid)) { 
        super.replaceFragment(SocialScreenLargeFragment.newInstance(), FRAGMENT_PLACE_RESOURCES); 
       } 
      } 
     } 

回答

1

不要替換,添加和顯示片段。

變化:

trans.replace(FRAGMENT_PLACE_RESOURCES, frag); 

到:

trans.show(frag); 
+0

哇,不知道這一點。有沒有錯誤,但片段沒有顯示,也許是因爲我不能像去除時那樣聲明FRAGMENT_PLACE_RESOURCES? –

+0

對不起。該方法只需要碎片。檢查我更新的帖子。 –

+0

是的,現在它看到片段所有的時間,但當方法show()執行什麼都沒有發生,也許有一些想法爲什麼? –