我正在创建一个存储一系列内容的应用。第一个活动以带有" Empty"的TextView和操作栏中的+按钮开始。有一个ListView设置为GONE。我想要它,这样当我创建一个新条目时,空TextView将消失,ListView将出现,带有新条目。
我试过这三种方式:
两种不同的布局。第一个是在onCreate函数中设置的TextView。 +按钮打开一个对话框,当用户点击"创建" (正按钮),它检查列表是否为空。如果是这样,它使用setContentView(id)来加载带有ListView的新布局。
一个布局,"空" TextView的可见性设置为可见,ListView设置为已消失。当"创建"单击对话框的按钮,它会检查列表是否为空。如果是这样,它将ListView设置为Visible,将TextView设置为Gone。
与第二种方法类似,只有ListView设置为Visible且TextView设置为已消失。在onCreate方法中,我将TextView设置为Visible,将ListView设置为Gone。我在想是否按默认布局值进行,这可行。
在所有这3种方法中,第一项活动恢复正常。问题是在用户创建新项目后,活动会打开包含项目信息的新活动。当我退出第二个活动时,第一个活动恢复正常,显示空TextView和隐藏的ListView。
当我从第一个活动回来时,onCreate方法再次运行。是否有某种方法可以将活动保留在后台或者还有其他我缺失的东西?
提前致谢!
答案 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
}