a、b、c、d の 4 つのアクティビティがあります。アクティビティ a はメイン アクティビティであり、b、c、および d を呼び出して何らかの計算を行います。android:noHistory="true"
それらのアクティビティの属性によって、アプリケーションでアクティビティが構築されるのを防ぐことができることを知っています。しかし、問題は、私が活動 c にいる場合、戻るボタンを押すと b に行きたいのですが、d が終了したら b と c を削除して a だけを表示したいということです。これを達成する方法はありますか?
2 に答える
このコードを各アクティビティに入れ、毎回少しずつ変更します。そうすれば、戻るボタンの通常の機能をオーバーライドできます
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
//start the desired activity
}
return super.onKeyDown(keyCode, event);
}
また、Android 2.0+のみをサポートしている場合は、これを使用できます
@Override
public void onBackPressed() {
// start your desired activity here
return;
}
これらのいずれかを各アクティビティに入れ、正しいアクティビティを開始してください
1 つの特定のアクティビティを閉じるには、このページを見てください -スタック履歴から特定のアクティビティをクリアする方法は?
はい、すべての startActivity 関数の後に必ず finish() 関数を使用することで達成できます。最後に表示したいアクティビティを除いて。
だから...これがどのように見えるかです
A のコード:
startActivity(Intent to start activity B);
B のコード:
startActivity(Intent to start activity C);
Finish();
C のコード:
startActivity(Intent to start activity D);
Finish();
これにより、アクティビティ D が完了するたびに、完了のためにアクティビティ C も完了するようになります。この C も完了しているため、アクティビティ B の Finish() は B を閉じます。アクティビティ A には Finish() がないため、そのアクティビティが画面に表示されます。
D が完了してからアクティビティ A に行きたい場合は、startActivityForResult を使用して結果を処理し、IF を使用して条件付きで B & C の Finish ステートメントを実行する必要があります。