2015-08-24 59 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()执行什么都没有发生,也许有一些想法为什么? –