如何让Android活动无法恢复到最初创建的状态?

时间:2015-05-07 00:43:17

标签: android android-layout listview android-activity android-listview

我正在创建一个存储一系列内容的应用。第一个活动以带有" Empty"的TextView和操作栏中的+按钮开始。有一个ListView设置为GONE。我想要它,这样当我创建一个新条目时,空TextView将消失,ListView将出现,带有新条目。

我试过这三种方式:

  1. 两种不同的布局。第一个是在onCreate函数中设置的TextView。 +按钮打开一个对话框,当用户点击"创建" (正按钮),它检查列表是否为空。如果是这样,它使用setContentView(id)来加载带有ListView的新布局。

  2. 一个布局,"空" TextView的可见性设置为可见,ListView设置为已消失。当"创建"单击对话框的按钮,它会检查列表是否为空。如果是这样,它将ListView设置为Visible,将TextView设置为Gone。

  3. 与第二种方法类似,只有ListView设置为Visible且TextView设置为已消失。在onCreate方法中,我将TextView设置为Visible,将ListView设置为Gone。我在想是否按默认布局值进行,这可行。

  4. 在所有这3种方法中,第一项活动恢复正常。问题是在用户创建新项目后,活动会打开包含项目信息的新活动。当我退出第二个活动时,第一个活动恢复正常,显示空TextView和隐藏的ListView。

    当我从第一个活动回来时,onCreate方法再次运行。是否有某种方法可以将活动保留在后台或者还有其他我缺失的东西?

    提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用startActivityForResult开始新活动。这减少了(但不是必须避免)你的活动被销毁的可能性。

如果您确实要确定,请使用onSaveInstanceState保存活动状态,并将其恢复为onCreate

答案 1 :(得分:0)

你的onCreate is在活动开始时再次呼叫..所以你可以使用Sharedpreferences的某些逻辑来获取之前保存的值

在完成按钮上使用此逻辑

SharedPreferences sp = getSharedPreferences("session", MODE_PRIVATE);
    Editor et = sp.edit();
    et.putBoolean("get_flag", true);
    et.commit();

on on onCreate使用此

SharedPreferences sp = getSharedPreferences("session",
                        MODE_PRIVATE);
                boolean value = sp.getBoolean("get_flag", false);
                if (value) {
                    Do Your Stuff


                } else {
                    Do Your Stuff
                }