アクティビティ スタックについて助けが必要です。
私のアプリでは、ユーザーがナビゲートする6つの画面があります
1-->2-->3-->4-->
4画面に行くとキャンセルボタンがあります
ユーザーがそのボタンをクリックすると、2番目の画面に移動し、
ユーザーがキーパッドの [戻る] ボタンをクリックすると、既にアクティビティ スタックにあった 1 つの画面に移動する必要があります。
例を教えてください。
アクティビティ スタックについて助けが必要です。
私のアプリでは、ユーザーがナビゲートする6つの画面があります
1-->2-->3-->4-->
4画面に行くとキャンセルボタンがあります
ユーザーがそのボタンをクリックすると、2番目の画面に移動し、
ユーザーがキーパッドの [戻る] ボタンをクリックすると、既にアクティビティ スタックにあった 1 つの画面に移動する必要があります。
例を教えてください。
使用するだけFLAG_ACTIVITY_CLEAR_TOP
ユーザーがボタンをクリックしたとき:
Intent intent = new Intent(ActivityD.this, ActivityB.class);
Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
ユーザーが押し返したとき:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(ActivityD.this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}
このコードは、ユーザーを最初のアクティビティに移動します。アクティビティは、のために再作成されませんFLAG_ACTIVITY_SINGLE_TOP
。アクティビティがすでにバックスタックにある場合、たとえばインテントからのデータを使用できるonNewIntent()が呼び出されます。
アクティビティのデフォルトなどの動作が必要な場合は、Androidマニフェストのこれらのフラグをアクティビティ宣言に入れてください。
onBackPressed()
必要なアクティビティを起動または再表示するための使用および意図メカニズム。
//画面4の戻るボタンの場合
Onclick(View v)
{
if(v==Backbtn)
{
finish();
startActivity(new intent(this,SecondActivity.class));
}
}
// 戻るキーを押すと 1 画面に戻ります
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
startActivity(new intent(this,FirstActivity.class));
return true;
}
return super.onKeyDown(keyCode, event);
}