【问题标题】:How to maintain the state of an activity at the time of clicking back button and coming back to the same activity如何在单击返回按钮并返回同一活动时保持活动的状态
【发布时间】:2011-08-16 15:50:20
【问题描述】:

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

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

  1. HomeActivity - 这是欢迎屏幕
  2. CategoryActivity - 这里有三个类别,例如动物、植物和水果。
  3. QuestionsActivity - 这里的每个问题都根据类别的选择提供。每个类别有 50 个问题。该应用程序有多项选择题类型。

所以应用程序的流程是当用户来并选择一个类别时,我从我的 xml 中为该类别填充 50 个问题的数组列表,然后在 QuestionActivity 屏幕上一一显示这些问题。 在这里,每次用户点击类别时,我都会打乱arraylist 并显示计数。即你完成了 1 个问题,你完成了 2 个问题等。

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

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

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

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

提前非常感谢, 伊山

【问题讨论】:

    标签: android onresume onpause


    【解决方案1】:

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

    如果问题是随机排列的,您会遇到问题,因为第 6 个问题可能与前 5 个问题相同。因此,不要只返回一个 int x,而是发送一个包含已回答问题编号的整数数组。

    【讨论】:

      【解决方案2】:

      我建议考虑将这些数据存储在 SQLite DB 或 SharedPreferences 文件中。通过这种方式,您可以记录用户离开的位置,并根据其中一种存储机制中的值提出下一个问题。

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

      【讨论】:

      • 您好,非常感谢您的回复,但我想在每次用户来访时随机打乱问题。所以这里我的查询更多地与前端相关,而不是后端。
      猜你喜欢
      • 1970-01-01
      • 2018-03-04
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多