Android活动仍会显示旧内容

时间:2017-07-29 12:37:31

标签: android android-activity android-lifecycle

我有一个应用程序,其中活动之间的导航基本上按如下方式组织:

MainActivity - >活动1 - >活性2。

在MainActivity中,用户打开一个文件,该文件在Activity1中显示/探索。在Activity2中,有关该文件的更多信息将根据用户在Activity1中的操作显示。

Activity1有android:launchMode="singleTop",因此从Activity2导航回Activity1会保留其状态。

现在,我在Activity1和Activity2中插入了一个“退出”按钮,返回MainActivity并打开一个新文件。

不幸的是,当我打开新文件时,Activity1会显示有关新文件和上一个文件的重叠信息。 当我从MainActivity启动它时,如何避免Activity1跟踪以前的实例? 提前致谢。

1 个答案:

答案 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();