2017-07-29 59 views
0

我有一个应用程序,其中活动之间的导航基本上组织如下:Android活动仍显示旧内容

MainActivity - > Activity1 - > Activity2。

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

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

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

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

+0

当您从Activity1移动到Activity2时,只需完成活动即可解决您的问题。例如, startActivity(意向);完(); –

回答

1

你为什么不刚开始的活动,并呼吁听众

// 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();