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

3

我的应用程序中有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),这很好。

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


你解决了这个问题吗?我也遇到了同样的问题。 - Alex Crist
1个回答

0

我曾经遇到同样的问题,后来通过在Fragment的onCreate方法中添加setRetainInstance(true);解决了它。


2
我尝试在onCreateView、onViewCreated和onAttach处加入了这行代码,但似乎并没有解决问题... - Juvi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接