在我的主活动中,我想重写onResume方法,以便它的行为不同,具体取决于之前打开的活动。例如:如果用户为 listView 创建一个新项(在 addNewItem 活动中),我需要重新加载数据库以显示新项。但是,如果他只是切换到一个活动,而主活动中显示的对象不会改变任何内容,则不应重新加载数据库,也不应再次构建 GUI。因此,我需要知道之前"打开"了哪个活动。
我希望你理解我的问题。
一种肮脏的方法是扩展应用程序类并设置一个属性 lastActivity,您将在应用中每个活动的每个 onResume/OnPause 方法中设置该属性。这样,当您在简历上的主要活动被调用时,只需阅读此 lastActivity 字段即可知道您来自哪里。但我认为这是肮脏的方式:D
调用活动时发送意图中的内容。
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 变量),但这是最基本的方法。
正确的方法是用startActivityForResult(intent, resultCode)
开始每个活动。
当活动退出时,它可以调用 setResult(int) 将数据返回回其父级。
链接到开发人员资源