使用选项卡第二次返回片段显示空白片段

时间:2014-01-28 23:13:20

标签: android android-fragments tabs actionbarsherlock

我的应用中有2个标签,使用tablistner,当我在非常具体的情况下导航到其他标签然后导航回第一个标签时,我遇到了问题。

在我从另一个片段加载一个名为“setFrom”的片段后发生这种情况:

public void LoadSetFrom ()
{
    final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    SherlockFragment setFrag = new setFrom();
    ft.replace(R.id.main_layout, setFrag, "setfrom"); 
    ft.commit();
}

这个“setFrom”片段是我的两个标签之一,之后我导航到第二个标签,当我回到“setFrom”时,标签导航仍然出现,但片段是完全空白的。

我正在使用TabListener:

public class TabListener<T extends SherlockFragment> implements com.actionbarsherlock.app.ActionBar.TabListener
{
      private SherlockFragment mFragment;
      private setFrom fromFragment;
      private final SherlockFragmentActivity mActivity;
      private final String mTag;
      private final Class<T> mClass;

    public TabListener(SherlockFragmentActivity activity, String tag, Class<T> clz) {
        mActivity = activity;
        mTag = tag;
        mClass = clz;
      }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        SherlockFragment preInitializedFragment = (SherlockFragment)mActivity.getSupportFragmentManager().findFragmentByTag(mTag);
        if (preInitializedFragment == null) {
                mFragment = (SherlockFragment) SherlockFragment.instantiate(mActivity, mClass.getName());
                ft.add(R.id.main_layout, mFragment, mTag);
            }
        else {
                ft.attach(preInitializedFragment);
       }
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        if (mFragment != null)
              ft.detach(mFragment);
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }

}

检查onTabSelected后,“setFrom”不为null,它附加到右边的片段,然后转到ft.attach(preInitializedFragment),这很好。

我的问题是为什么在附加到正确的片段之后视图仍然是空白的?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题 通过将 setRetainInstance(true); 添加到我的Fragment的onCreate

来解决这个问题