我的应用中有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),这很好。
我的问题是为什么在附加到正确的片段之后视图仍然是空白的?
答案 0 :(得分:0)
我遇到了同样的问题 通过将 setRetainInstance(true); 添加到我的Fragment的onCreate
来解决这个问题