如何在单击后退按钮并返回相同活动时维护活动的状态

时间:2011-08-16 15:50:20

标签: android onresume onpause

我有一个与不同活动之间的导航相关的问题,onPause和onRestore可能会解决问题,但我不知道如何。

问题是 我的应用程序中有以下屏幕

  1. HomeActivity - 这是欢迎屏幕
  2. CategoryActivity - 这里有三个类别,例如动物,植物和水果。
  3. QuestionsActivity - 这里根据类别的选择提供每个问题。在每个cateogry中有50个问题。应用程序有多种选择类型的问题。
  4. 所以应用程序的流程是当用户来到并选择一个类别时,我从我的xml中为该类别填充50个问题的arraylist,然后在QuestionActivity屏幕上逐个显示这些问题。 在这里,每次用户点击该类别时,我都会对这个类型进行洗牌 并显示计数。即你完成了1个问题,你完成了2个问题等。

    所以这是关于我的应用程序和现在的问题:

    假设用户在QuestionActivty中,他回答了5个问题然后单击移动设备的后退按钮,以便将其重定向到CategoryActivity屏幕。现在,如果他再次点击相同的类别,他将被重定向到QuestionActivity屏幕,但他的问题从第一个问题开始:(。理想情况下,它应该从第6个问题开始,因为他已经回答了5个问题。

    有人可以帮我解决这个问题吗?如果我坚持计数,那么每次我洗牌时都不会对我有用(所以回答的问题可能会重复。) 理想的解决方案应该是让android在点击后退按钮时管理QuestionActivity的状态,并在再次选择相同的类别时恢复相同的状态

    这一定是一个常见的问题,所以如果你已经解决了,请帮助我。

    提前多多感谢, 依禅

2 个答案:

答案 0 :(得分:0)

我建议将这些数据存储在SQLite DB或SharedPreferences文件中。这样,您就可以记录用户离开的位置,并根据其中一个存储机制中的值显示下一个问题。

http://developer.android.com/guide/topics/data/data-storage.html

答案 1 :(得分:0)

为什么不使用StartActivityForResult()。将一个int x = 5发送回CategoryActivity,然后当你恢复QuestionActivity时,你可以在Bundle extras中将x发送回来。然后,QuestionActivity知道从第6(x + 1)个问题开始。

如果问题是随机排序的,那么您将遇到问题,因为第6个问题可能与前5个问题相同。因此,不是仅发送一个int x,而是发送已经回答的问题编号的整数数组。