【发布时间】:2025-12-12 00:30:01
【问题描述】:
按下后处理导航抽屉的选定状态的正确方法是什么?
我有一个导航抽屉,其中包含 n 个条目(在列表视图中),例如 Android Studio 中的 SDK 示例。 当我单击导航抽屉条目时,我希望将它们添加到后台堆栈中,以便我可以移回它们。
在 onNavigationDrawerItemSelected(int pos) 我有
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
if (position == 0) {
transaction.replace(R.id.container, new FragmentA());
} else if (position == 1) {
transaction.replace(R.id.container, new FragmentB());
} else {
transaction.replace(R.id.container, new FragmentC());
}
transaction.addToBackStack(null);
transaction.commit();
当我单击抽屉中的第二个条目时,B 被选中并替换 A。如果我随后单击后退按钮,片段 A 会再次按原样显示,但 B 在导航抽屉中仍处于选中状态。
如何在按下返回后更新抽屉的选择状态?
不知何故,我需要调用 mDrawerListView.setItemChecked(position, true);或 NavigationDrawerFragment.selectItem(int position)。但是到哪个位置呢?我怎么记住它?
使用 onBackPressed 拦截?
@Override
public void onBackPressed() {}
但是我怎么知道哪个片段再次处于活动状态?以及对应的位置。
有一些我看不到的简单解决方案吗?似乎将返回与抽屉导航结合使用并更新选择状态是一种标准模式。
【问题讨论】:
标签: android android-fragments navigation navigation-drawer onbackpressed