2012-03-14 16 views
0

私はアンドロイド用の簡単なアプリを作成しました。ボタンを使って1ページ目からアプリを起動し、2ページ目や3ページ目などをクリックして必要なアクティビティを開始します、シンプル。Androidアプリを閉じてもう一度やり直してみましょう

あなたがHOMEをクリックするかアプリから出てきたときに、(問題よりも厄介な)問題は何ですか?アンドロイドはアプリをすぐに殺しませんので、あなたが記憶しているページを保持していて、たとえば、アクティビティ2または3のアプリ。私はアプリをもう一度最初に戻って1で開いて閉じるときにアプリをしたい、私は1をクリックして戻ることができますが、これは本当に私が欲しかったものではありません。

私はあなたがする必要がどのような

答えて

6

は、あなたの利点に、アクティビティのライフサイクルを使用しているしてください誰かがこれを読んで理解、可能な最も簡単な解決することができます願っています。何らかの理由で画面が非表示になると、そのメソッドが呼び出されます。もう一度表示されると、onResumeが呼び出されます。ただし、最初に新しいアクティビティが表示されても、onResumeが呼び出されます。別の問題は、アクティビティ間で遷移するときにが呼び出されることです。

最後のアクティビティのとonResumeが連続して呼び出されたときに、最終的にアプリを「再起動」する必要があります。このクラスを試して、すべてのアクティビティでアクティビティの代わりにこのアクティビティを延長します。

public abstract class BaseActivity extends Activity { 

    private static BaseActivity lastPausedActivity = null; 

    @Override 
    protected void onPause() { 

     super.onPause(); 
     lastPausedActivity = this; 
    } 

    @Override 
    protected void onResume() { 

     super.onResume(); 
     if(this == lastPausedActivity) { 
      lastPausedActivity = null; 
      Intent intent = new Intent(this, FirstActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
     } 
    } 
} 

私はこのコードをテストしていないので、少し調整が必要かもしれませんが、ロジックは健全でなければなりません。

+0

私はこのクラスを作成し、それを他のクラスのコードで使用していましたが、最初にアプリケーションが起動しましたが、もう一度別のページに移動しようとすると再び最初のページに戻り、アプリケーションがクラッシュするまで最初のページの第2ページの最初のページなどのループに入ります。 –

+0

'getTaskId()'は不適切な選択でした。私はそれがアクティビティ間でユニークかもしれないと思ったが、そうではないかもしれない。 taskIdの代わりにActivityを試してみてください(これは一般的には悪い考えですが、私のロジックが正しいことを確認するだけです)。コードを更新します。 –

+0

ああ私は逃したものを見ます。 'lastPausedActivity'は' if'チェックの後にリセットする必要があります。 –

関連する問題