2012-08-28 7 views
13

他のアクティビティで を押したため、アクティビティが表示されたかどうかを知りたいと思います。ライフサイクルでは、確実に私にその情報を与えているコールバック を特定できませんでした。戻るナビゲーションのためにアクティビティが前面に来たかどうかを確認する

onRestart()が機能しません。また、Appsタスクが正面に持ち込まれた場合にも起動します。同じ理由で onResume()は機能しません。

私はそこには単純な解決策があると思いますが、Androidではおそらく簡単なことはかなり厄介なことがあります。

+1

研究[この回答](のhttp://のstackoverflow。 com/a/10493384/779408) – breceivemail

+1

これは少し遅れますが、なぜonRestartは機能しませんか?わたしにはできる? – osrl

答えて

14

startActivityForResult(Intent, int)で2回目のアクティビティを呼び出し、2回目のアクティビティでonBackPressed()をオーバーライドし、setResult()からRESULT_CANCELEDにする。最後に、第1回の活動でそれをキャッチするonActivityResult()

コード例:

活動1:

Intent i = new Intent(Activity1.this, Activity2.class); 
startActivityForResult(i, 0); 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == 0) { 
     if (resultCode == RESULT_CANCELED) { 
       // user pressed back from 2nd activity to go to 1st activity. code here 
     } 
    } 
} 

活動2:

@Override 
public void onBackPressed() { 
    setResult(RESULT_CANCELED); 
    finish(); 
} 
+1

私は約15のアクティビティを持っていますが、私はstartActivityForResultを呼び出すオプションがないAndoridAnnotationsを使用しています(ただし、今後のリリースでは)...だから私はまだ他のアイデアを期待しています... – Jakob

+1

AndroidAnnotationsはあなたはこのような通常の基本的なAndroidの構造を使用していますか?私はそのようなツールを使用しないでください... – Ridcully

+1

いいえ私は標準的なアンドロイド構造を使用することができますが、私はすでに15のアクティビティを持っています。その答えは、「それを行う方法」かもしれません。 – Jakob

関連する問題