我在一个活动中有 3 个选项卡工作正常。但是当我从一个选项卡导航到另一个选项卡时,当前选项卡中的前一个选项卡内容视图。我无法弄清楚问题是什么?我在 LogCat 上没有收到错误消息,也没有 redFlags。有人可以帮我解决这个问题吗?
显示如下:
我在一个活动中有 3 个选项卡工作正常。但是当我从一个选项卡导航到另一个选项卡时,当前选项卡中的前一个选项卡内容视图。我无法弄清楚问题是什么?我在 LogCat 上没有收到错误消息,也没有 redFlags。有人可以帮我解决这个问题吗?
显示如下:
我已经看到了我添加片段而不是替换它们的地方。看看你的 TabListener。这对我有用:
class MyTabsListener implements ActionBar.TabListener {
private Fragment fragment;
public MyTabsListener(ListFragment fragment) {
this.fragment = fragment;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Bundle bundle = new Bundle();
bundle.putInt("Tab", tab.getPosition());
fragment.setArguments(bundle);
ft.replace(android.R.id.content, fragment);;
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// Clear the backstack if another Tab is selected
if (fragment != null) {
FragmentManager fm = getSupportFragmentManager();
if (fm.getBackStackEntryCount()>0) {
fm.popBackStack(fm.getBackStackEntryAt(0).getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
ft.remove(fragment);
}
}
@Override
public void onTabReselected(Tab tab,FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
如果您想要动态片段,则不能在 xml 中静态声明片段,您需要一个占位符,例如框架,然后用该框架替换您的片段
例如
<FrameLayout
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
在你的活动中
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment fragment = new NearMeFragment();
ft.replace(R.id.map, fragment).commit();
从我不久前提出的问题中检查此链接
替换 ListFragment 会在新列表之上显示上一个列表
你也在打电话ft.add(android.R.id.content,mFragment, mTag);
,这是在彼此之上添加一个片段