我有一个应用程序,其中活动之间的导航基本上按如下方式组织:
MainActivity - >活动1 - >活性2。
在MainActivity中,用户打开一个文件,该文件在Activity1中显示/探索。在Activity2中,有关该文件的更多信息将根据用户在Activity1中的操作显示。
Activity1有android:launchMode="singleTop"
,因此从Activity2导航回Activity1会保留其状态。
现在,我在Activity1和Activity2中插入了一个“退出”按钮,返回MainActivity并打开一个新文件。
不幸的是,当我打开新文件时,Activity1会显示有关新文件和上一个文件的重叠信息。 当我从MainActivity启动它时,如何避免Activity1跟踪以前的实例? 提前致谢。
答案 0 :(得分:1)
为什么不直接启动活动并在Listeners上调用finish()
// MainActivity
Intent intent = new Intent(this, YourActivity.class);
this.startActivity(intent);
//Activity 1
finish();
或者如果你想在MainActivity中同时处理,你可以执行以下操作,也可以使用putExtra()方法自定义它以提供参数映射。
// MainActivity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == 1) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// Do your stuff here
}
}
if (requestCode == 2) {
if (resultCode == RESULT_OK) {
// Do your stuff here
}
}
}
// Your listener for starting another activity, use in Main Activity
Intent intent = new Intent(this, Activity1.class);
startActivityForResult(intent,1);
//Activity1
// start and exit, if you wanna handle Activity2 from Activity1 you need to override onActivityResult for it
Intent intent = new Intent(this, Activity2.class);
Intent goingBack= new Intent();
setResult(RESULT_OK,goingBack);
startActivityForResult(intent,2);
finish();
//Activity2
//exit listener
Intent goingBack= new Intent();
setResult(RESULT_OK,goingBack);
finish();