0

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

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

4

3 回答 3

0

正确的做法是使用startActivityForResult(intent, resultCode).

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

链接到开发人员资源

于 2013-02-01T18:17:54.600 回答
0

当你调用 Activity 时,你可以在你的意图中发送一些东西。

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

然后在新的活动中,您访问它并比较结果:

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

有一些更精细的方法可以做到这一点(即通过一个对应于特定活动的 int 变量),但这是最基本的方法。

于 2013-02-01T17:05:25.880 回答
0

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

于 2013-02-01T17:07:02.073 回答