【发布时间】:2015-07-20 19:12:52
【问题描述】:
在阅读this并搜索Android文档后,我放弃了,决定在这里问。
我试图在我的Navigation Drawer 中设置一个后退按钮,以便应用程序仅从Home 片段关闭,任何其他片段将带我们回到Home。例如,如果我们从Home 片段开始并导航到导航抽屉中的其他片段,当我们点击返回按钮时,我们将到达Home 片段,如果我们从主页片段返回,我们将退出应用程序.
我尝试过这样实现:
public void onNavigationDrawerItemSelected(int position) {
...
// If the next fragment is Home, clear the backstack.
if (frag instanceof Home) {
getSupportFragmentManager().popBackStack();
fragmentManager.beginTransaction().replace(R.id.container, frag)
.commit();
}
// If the backstack already contains a transaction, replace the current fragment
else if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
fragmentManager.beginTransaction().replace(R.id.container, frag)
.commit();
}
// If the backstack is empty, insert the Home -> Fragment transaction
else {
fragmentManager.beginTransaction().replace(R.id.container, frag)
.addToBackStack("").commit();
}
...
}
...
@Override
public void onBackPressed() {
if (drawerLayout.isDrawerOpen(Gravity.START)) {
drawerLayout.closeDrawer(Gravity.LEFT);
} else {
super.onBackPressed();
// If returning back to Home fragment, restore action bar title.
if (getSupportFragmentManager().getBackStackEntryCount() > 0)
onSectionAttached(0);
}
}
我附加的链接不能正常工作,我实施的方式也不能始终如一地工作。例如,如果我从主页导航到其他片段并返回主页(不按后退按钮),我的片段会相互重叠。
【问题讨论】:
-
尝试将活动实现为父活动,并实现向上导航。它涉及在清单中添加元素。更多信息可以参考developer.android.com/training/implementing-navigation/…
标签: java android android-fragments navigation