【发布时间】:2014-06-11 16:11:32
【问题描述】:
这两天我已经被这个问题难住了:
1 个活动,3 个片段(A、B 和 C)。 B 和 C 是选项卡。如果我用 B 替换片段 A 并将 A 添加到后堆栈,如下所示:
fragmentManager.beginTransaction()
.addToBackStack("A_TO_B_TAG")
.replace(R.id.fragmentContainer, fragment, "FragmentB")
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
当我从片段 C 中点击向上插入符号并执行以下操作时:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
//Pop the back stack and hide the Up caret
FragmentManager fm = mHostingActivity.getSupportFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
fm.popBackStack();
}
mHostingActivity.getDrawerToggle().setDrawerIndicatorEnabled(true);
//Kill any tabs
mHostingActivity.getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
mHostingActivity.getSupportActionBar().removeAllTabs();
return true;
}
return super.onOptionsItemSelected(item);
}
然后用第一个代码 sn-p 重新输入 B,A 的 onPause() / onStop() 没有被调用,两者都在一个另一个的顶部绘制。有谁知道是什么原因造成的?
我已经提交了一份错误报告,因为我真的不确定为什么会发生这种行为,它位于 here。
【问题讨论】:
-
试试 fm.popBackStackImmediate();
-
嗯,我几乎可以肯定问题不在于后堆栈。如果我不'tabify' B 和 C,它可以正常工作。请参阅我需要在后堆栈中的 Fragment A(不是 B 或 C,因为它们是选项卡)。当我用 Frag B 替换 Frag A 时,它不会停止绘制。它第一次工作正常,但第二次加载 Frag B 时就不行了。
标签: android fragment android-tabs fragmentmanager