我的应用程序中有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),这很好。
我的问题是,为什么在将其附加到正确的片段后,视图仍然为空白?