我在活动中有3个标签可以正常工作。但是当我从一个选项卡导航到另一个选项卡时,当前选项卡中的上一个选项卡内容视图。我无法弄清楚问题是什么?我没有在LogCat上收到错误消息,也没有redFlags。有人可以帮我解决这个问题吗?
显示如下:
答案 0 :(得分:0)
我已经看到了这里我添加了片段而不是替换它们。看看你的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
}
}
答案 1 :(得分:0)
如果你想要动态片段,你不能在你的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();
从我问过的问题中查看此链接
Replacing a ListFragment shows the previous list on top of the new one
你也在呼叫ft.add(android.R.id.content,mFragment, mTag);
,它正在彼此之上添加一个片段