【发布时间】: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