【发布时间】:2018-08-23 18:49:54
【问题描述】:
导航设计指南说明:
当先前查看的屏幕也是当前屏幕的父级层次结构时,按“后退”按钮与按“向上”按钮的结果相同——这是很常见的情况。 up vs back - navigation guide
我有一个 MainActivity A,当触摸 NavigationDrawer 中的导航条目时,它会打开另一个活动 B。 Activity A 在 AndroidManifest 中设置为 Activity B 的父级:android:parentActivityName=".MainActivity"
我按照这个android documentaion添加了到活动B的导航。它展示了如何在活动B中实现onOptionsItemSelected:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
// Respond to the action bar's Up/Home button
NavUtils.navigateUpFromSameTask(this)
return true
}
}
return super.onOptionsItemSelected(item)
}
当我从 Activity B 按下返回时,Activity A 的状态被保存并且 NavigationDrawer 被打开。但是,如果我使用向上导航,则会调用 onCreate()of 活动 A 并且它会丢失其状态(抽屉已关闭等)。
这不是引用的“相同结果”。
当我将 NavUtils.navigateUpFromSameTask(this) 替换为简单的 finish() 时,它的行为与按回键相同 - 活动 A 的状态被保留。
我自然更喜欢使用finish的方式。那么预期的行为是什么?指南是否相互矛盾或遗漏了什么?
【问题讨论】:
标签: android navigation back