2017-07-29 17 views
0

アクティビティ間のナビゲーションが基本的に次のように構成されているアプリがあります:Androidのアクティビティで古いコンテンツが表示される

MainActivity - > Activity1 - > Activity2

MainActivityでは、ユーザーがファイルを開き、Activity1で表示/探索されます。 Activity2では、ファイルに関する詳細情報がActivity1のユーザーのアクションに基づいて表示されます。

アクティビティ1にはandroid:launchMode="singleTop"が含まれているため、アクティビティ2からアクティビティ1に戻ってナビゲートするとステータスが保持されます。

ここで、Activity1とActivity2の両方にMainActivityに戻って新しいファイルを開くための「終了」ボタンを挿入しました。

残念ながら、新しいファイルを開くと、Activity1は新しいファイルと前のファイルに関する重複した情報を表示します。 MainActivityからActivity1を起動したときに、以前のインスタンスを追跡するためにActivity1を回避するにはどうすればよいですか? ありがとうございます。

+0

アクティビティ1からアクティビティ2に移動するとアクティビティが終了すると、問題が解決されます。たとえばstartActivity(インテント); finish(); –

答えて

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(); 
関連する問題