2012-05-23 4 views
61

私のアプリにはログアウト機能があります。ユーザーがログアウトをクリックすると、ホーム画面に移動します。今私は戻るボタンを押して私のアプリを終了しています。しかし、私が望むのは、私はバックボタンの機能と同じように自動的に(つまりプログラム的に)終了する必要があるということです。私は仕上げを呼び出すことによって知っている()機能を行います。しかし、それは前の活動に行くことです。アンドロイドのボタンをプログラムで元に戻すにはどうすればいいですか?

+0

戻るボタンを押しても、前のアクティビティが表示されます... – Tarun

+7

finish();を使用します。 –

+1

@Tarun私はすべての履歴をクリアするためにこのコードを使用していますExitActivity.this.finish(); \t \t \tインテントintent1 =新しいインテント(exitActivity.this、PinActivity.class); \t \t \t intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); \t \t \t startActivity(intent1); – GoCrazy

答えて

96

onBackPressed()があるのでサポートされています:APIレベル5

@Override 
     public boolean onKeyDown(int keyCode, KeyEvent event) { 
      if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
       onBackPressed(); 
      } 
    } 

@Override 
    public void onBackPressed() { 
     //this is only needed if you have specific things 
     //that you want to do when the user presses the back button. 
     /* your specific things...*/ 
     super.onBackPressed(); 
    } 
+1

この点は何ですか?あなたはアンドロイドがデフォルトで行うことを書いています。戻るボタンを押すとonBackPressed()が呼び出されます。 – drulabs

+3

@KKDもしあなたが5以下のAPIをサポートしなければならないなら、上記のように使う必要があります.. http://android-developers.blogspot.co.uk/2009/12/back-and-other-hard-keys-three- stories.html – Tarun

+1

私のコメントをお詫びします....私はレベル8以降です。 – drulabs

5

アクティビティでオーバーライドした後にonBackPressedを呼び出してください。

+1

お返事ありがとうございます..戻るボタンが押されたときにOnBackPressedを挿入することができます..私が望むのは、自動的に戻るボタンを呼び出したいのです...私はクリアです。 – GoCrazy

+0

1つのことをしてください...どこにいても、この関数を呼び出すだけでいつでも呼び出すことができます。フラグや必要なイベントに基づいてonCreate内で呼び出すことができます。 – drulabs

30

あなたはonBackPressed()を上書きする必要はありません - それは、すでにユーザーが[戻る]ボタンを押すと、あなたの活動は、デフォルトで行いますアクションとして定義されています。したがって、戻るボタンを「プログラムで押す」ことを希望するときはいつでもonBackPressed()に電話してください。私はあなたが戻るボタンが何をするのかと混乱していると思う

);のみfinish()につながる

はいえ、呼び出されています。デフォルトでは、finish()への呼び出しなので、現在のアクティビティを終了します。その活動の背後に何かがある場合、その画面が表示されます。

ログインからアクティビティを起動するときに、CLEAR_TOPフラグを追加して、ログインアクティビティが終了しないようにすることができます。

+0

あなたの答えをありがとう..それはいいようですが、私は同じログイン画面で再びあなたのアプローチを試みた..あなたはこのことから私を助けてください... – GoCrazy

+1

これは正解ですが、必ずしも "仕上げ()"の呼び出しではないので編集してください。私のケースでは(それは私が意図した通りに動作します)、これはフラグメントスタックを逆向きに移動する方法であり、スタックの最初のアイテムに到達するまでfinish()を呼び出さない。 –

6

フラグメントを扱う場合や、バックボタンを押したときにフラグメントを変更している場合、前のフラグメントに戻るため、onBackPressed()メソッドをオーバーライドすると便利なことがあります。

+1

これは正確で、より多くのアップホールドに値します。 –

関連する問題