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

Posted

技术标签:

【中文标题】使用选项卡第二次返回片段显示空白片段【英文标题】:Going back to fragment second time using tabs shows blank fragment 【发布时间】:2014-02-20 12:56:47 【问题描述】:

我的应用中有 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”片段是我的 2 个标签之一,之后我导航到第二个标签,当我回到“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”不为空,它附加到正确的片段并转到 ft.attach(preInitializedFragment),这很好。

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

【问题讨论】:

您解决了这个问题吗?我遇到了同样的问题。 【参考方案1】:

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

来解决它

【讨论】:

嗯,我试着把这条线放在oncreateview,onviewcreater和onattch,似乎并没有解决问题......

以上是关于使用选项卡第二次返回片段显示空白片段的主要内容,如果未能解决你的问题,请参考以下文章

在 ViewPager 的多个选项卡中使用单个片段

保存片段状态操作栏选项卡

在tablayout viewpager中运行调整选项卡片段

选项卡内的片段

带有片段的 Android Up 按钮未显示完整片段

我在 viewpager 选项卡中的片段不刷新