【问题标题】:losing Activity details after startActivity() method in Android在 Android 中的 startActivity() 方法后丢失 Activity 详细信息
【发布时间】:2013-03-22 20:01:48
【问题描述】:

我的项目 Connect+Details 和 Menu 中有 2 个主要活动。在我将第一个活动切换到第二个活动之后,一切顺利。问题从“菜单”返回到“连接+详细信息”开始。

当我使用返回键在第二个活动之间切换并返回第一个活动时,一切顺利。

使用此代码时出现问题:

Intent myIntent = new Intent(Menu.this, ConnectActivity.class);
startActivity(myIntent);

我确实返回到“连接+详细信息”,但该活动中的每个细节都丢失了。

我的问题很简单,我怎样才能回到预览活动并仍然拥有该活动中使用的详细信息。

编辑: 即使我参加第 4 次、第 5 次活动也是如此,所以 finish() 对我没有帮助。

【问题讨论】:

  • 在清单文件中,在您的 Connect 活动集中保存的实例为 true。
  • 为什么要使用Intent 回到连接Activity?如果您已经创建了它,那么您不需要这样做
  • 我不知道有什么其他方法可以返回使用过的活动
  • 哦,我明白了,抱歉没有想到。这取决于您要保存的 Activivty 中的内容
  • 我最多需要保存 6 个可序列化对象。

标签: android android-intent android-activity


【解决方案1】:

您可能希望将数据保存在SharedPreferences 或数据库中,然后使用保存的数据重新填充您的Activity。当您离开 Connect Activity 时,您可以使用 SharedPreferences 保存 key/value 对,即使您的应用关闭,这种情况也会持续存在。

如果要存储大量数据,那么您可以考虑使用SQLite DB。这可能有点难以设置和使用,但如果您要存储大量数据……尤其是针对不同用户时,这可能是值得的。

当您离开Activity 或程序时,这两个选项都会保留您的数据。您也可以使用static Array,但前两个选项中的一个可能更适合您。

Storage Options Docs 提供了一些不错的示例来帮助您入门,尤其是如果您认为共享首选项适合您。

编辑

除非有所改变,否则您不能将可序列化对象存储在SharedPreferences 中。但是Here is a SO link 讨论了将它们保存到文件并从那里读取。也许这会对你有所帮助。

【讨论】:

    【解决方案2】:

    不要使用 Intent 从 'Menu' 移动到 'Connect+Details' 而是调用 finish();来自它

    仅在第一类中使用意图移动到第二类,即;'Connect+Details' to 'Menu'

    不要在 Connect+Details 中调用 finish()

    【讨论】:

    • 好的,谢谢,但如果我想从“菜单”之后的活动中退出,我该怎么办?
    • 我不明白你,你需要从 Connect+Details->Menu 和 Menu otherclass 移动吗?是吗
    • 连接+详细信息->菜单->添加新客户端->更新客户端->连接+详细信息。那是我的循环,主要的是在“连接+详细信息”中有我与服务器的连接的属性。只要应用程序正在运行,该连接就不能更改,也不能续订
    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2013-11-01
    • 2016-07-18
    • 2021-04-07
    • 1970-01-01
    相关资源
    最近更新 更多