a、b、c の3 つのアクティビティがあります。アクティビティbはアクティビティcを開始します。アクティビティcで戻るキーを押すと、アクティビティcが終了()し、アクティビティbがそのまま表示されます。
それはそれほど難しいことではありません。私がやりたいことは、アクティビティcを終了するときに、アクティビティaを表示するために同時にアクティビティbを終了したいということです。
別のアクティビティからアクティビティを終了する方法を知っている人はいますか?
a、b、c の3 つのアクティビティがあります。アクティビティbはアクティビティcを開始します。アクティビティcで戻るキーを押すと、アクティビティcが終了()し、アクティビティbがそのまま表示されます。
それはそれほど難しいことではありません。私がやりたいことは、アクティビティcを終了するときに、アクティビティaを表示するために同時にアクティビティbを終了したいということです。
別のアクティビティからアクティビティを終了する方法を知っている人はいますか?
この最善の方法を実現するには、startActivityForResult と onActivityResult を組み合わせて使用します。
アクティビティ A からアクティビティ B を開始し、次に B からアクティビティ C を開始して、startActivityForResult() を使用して結果を取得します。
アクティビティ C で、ユーザーがトリガー バックまたは Destroy() を実行したとき
Aにも終了するように通知する結果を設定し、
C で finish() を呼び出します。
B が C からその結果を受け取ると、B は自分自身に対しても finish() を呼び出します。
親アクティビティで、子アクティビティをトリガーしながら、次のコマンドを使用します。
startActivityForResult(intent,variable(int));
アクティビティ B で次の方法で onActivityResult メソッドをオーバーライドします。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==2){
finish();
}
}
ここで、子アクティビティ C で、次の方法で onStop と onDestroy をオーバーライドします。
protected void onStop() {
setResult(2);
super.onStop();
}
@Override
protected void onDestroy() {
setResult(2);
super.onDestroy();
}
はい、アクティビティ C に移動する前に、アクティビティ B を終了します。したがって、次回 [ack] ボタンを直接クリックすると、次のコードのようにアクティビティ A に移動します。
Intent in = new Intent(B.class, C.class);
startActivity(in)
finish();