如何识别onResume中“打开”的活动

时间:2013-02-01 16:59:02

标签: android onresume

在我的主要活动中,我想覆盖onResume方法,因此它的行为会有所不同,具体取决于之前打开的活动。 例如:如果用户为listView创建了一个新项(在addNewItem活动中),我需要重新加载数据库以显示newItem。 但是,如果他只是切换到一个活动,该活动不会改变主活动中显示的对象,则不应重新加载数据库,也不应再次构建GUI。 因此,我需要知道之前“打开”了哪些活动。

我希望你能理解我的问题。

3 个答案:

答案 0 :(得分:0)

当您致电活动时,您可以通过意图发送内容。

Intent myIntent = new Intent(Activity1.this,Activity2.class);
Bundle myData = new Bundle();
myData.putString("previousActivity", "Activity1");
myIntent.putExtras(myData);
startActivity(myIntent);

然后在新的Activity中,您可以访问它并比较结果:

Intent myLocalIntent = getIntent();
Bundle myBundle = myLocalIntent.getExtras();
String str1 = myBundle.getString("previousActivity");
if string.equals("Activity1"){
   // do code changes for activity 1 here
}

有一些更精确的方法(即通过与特定活动相对应的int变量),但这是最基本的方式。

答案 1 :(得分:0)

一种肮脏的方法是扩展您的应用程序类并设置一个属性lastActivity,您可以在应用程序中每个活动的每个onResume / OnPause方法中设置该属性。这样,当您调用简历上的主要活动时,只需阅读此lastActivity字段即可知道您来自何处。但我认为这是一种肮脏的方式:D

答案 2 :(得分:0)

正确的方法是使用startActivityForResult(intent, resultCode)开始每项活动。

  

当一个活动退出时,它可以调用setResult(int)将数据返回给它的父项。

Link to Developers Resource