【问题标题】: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),这很好。

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

【问题讨论】:

  • 您解决了这个问题吗?我遇到了同样的问题。

标签: android android-fragments tabs actionbarsherlock


【解决方案1】:

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

来解决它

【讨论】:

  • 嗯,我试着把这条线放在oncreateview,onviewcreater和onattch,似乎并没有解决问题......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多