2017-07-29 88 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();