我有两个活动 A 和 B。A 有一个使用 LoaderManager 的 ListFragment,而 B 活动显示有关在 A 的 ListFragment 中选择的项目的详细信息。我刚刚注意到,当我使用后退按钮从 B 回到 A 时,ListFragment 中的位置会保留,但是当我使用操作栏中的向上按钮(左点插入符号)时,A 活动被重新创建,因此列表视图中的位置丢失。
我想解决这个问题,但我不确定如何正确解决这个问题。
我想出了这个解决方案:
a) 使用onBackPressed()
android.R.id.home
替换B活动中(向上操作栏按钮)的默认实现,而不是NavUtils.navigateUpFromSameTask(this)
调用onBackPressed()
活动方法的函数。我已经对其进行了测试,并且可以正常工作。
b) 继续使用NavUtils.navigateUpFromSameTask(this)
但是在 A 活动使用的 ListFragment 方法onSaveInstanceState
期间实现并恢复 listView 位置。onCreate
(我还没有测试过这种方法)
哪种解决方案更好?或者还有其他(更好的)解决方案吗?
解决方案a)非常简单直接,但b)可能更好,因为使用了 up caret 的默认实现。
欢迎任何想法。谢谢。