0

我正在制作一个存储事物列表的应用程序。第一个活动以带有“Empty”的TextView和操作栏中的+按钮开始。有一个ListView设置为GONE。我需要它,以便当我创建一个新条目时,空的TextView将消失,并且ListView将随新条目一起显示。如何让Android活动恢复到最初创建的状态?

我想这三种方式:

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

  2. 一种布局,“Empty”TextView的可见性设置为可见,并且ListView设置为消失。当单击对话框的“创建”按钮时,它会检查列表是否为空。如果是这样,它会将ListView设置为可见,并将TextView设置为无效。

  3. 与第二种方法类似,只有ListView设置为Visible,而TextView设置为消失。在onCreate方法中,我将TextView设置为可见,将ListView设置为去。我在想如果它是由默认的布局值,这将工作。

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

看来,当我从第一个活动返回时,onCreate方法会再次运行。有没有办法让活动保持在后台或者有什么我失踪的东西?

在此先感谢!

+0

发布您的代码,请 –

回答

1

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

如果您确实想确认,请将活动状态保存为onSaveInstanceState并将其恢复为onCreate

+0

我用'onSaveInstatnceState(捆绑了)'和'onRestoreInstantceStat e(Bundle in)'来维护活动状态并且工作。谢谢! – Tylerc112

0

那么你onCreate is再次致电时活动开始..所以,你可以使用一些逻辑和Sharedpreferences得到先前保存的值

使用此逻辑上完成按钮

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

中上使用的onCreate这

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


       } else { 
        Do Your Stuff 
       }