2

私はからナビゲートしています:

  • Main activityActivity 2
  • Activity 2Activity 3
  • Activity 3Activity 4

からIntent

Activity 4また、ユーザーがからに直接移動できるようにメニューを作成しましたMain activity
しかし、メニューを使用してからに移動した後、戻るとActivity 4アプリケーションを終了するのではなく、に移動します。Main activityActivity 3

私は試した:

@Override
public void onBackPressed() {
    super.onBackPressed();
    MainActivity.this.finish();
}

しかし、利益はありません。助言がありますか?

4

8 に答える 8

6

4番目のアクティビティからメインアクティビティに移動するときに、このコードを試してください。

Intent inMain=new Intent(Activity4.this, MainActivity.class);
inMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(inMain);

ノート:

あなたの場合、このコードは前のアクティビティをクリアし、バックスタックにアクティビティがない状態でメインアクティビティを起動します。

于 2012-06-20T09:09:21.003 に答える
3

フラグIntent.FLAG_ACTIVITY_CLEAR_TOPを設定してすべての中間アクティビティを終了すると、呼び出されたアクティビティがアクティビティスタックの一番上に表示されます。

于 2012-06-20T09:09:16.847 に答える
2

インテントでフラグIntent.FLAG_ACTIVITY_CLEAR_TOPを使用します。詳細については-

FLAG_ACTIVITY_CLEAR_TOP

于 2012-06-20T09:07:36.003 に答える
1

に戻るときは、MainActivityを使用する必要がありIntent.FLAG_ACTIVITY_CLEAR_TOPますIntent。これは、 :goHomeで使用できるメソッドの例です。Activity

public void goHome ()
{
    Intent homeIntent = new Intent();
    homeIntent.setClass(this, MainActivity.class);
    homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(homeIntent);
}
于 2012-06-20T09:14:26.053 に答える
1

クリアトップフラグを使用してstartActivityメソッドを呼び出します

   startActivity(new Intent(this, UI.class)
  .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
于 2012-06-20T09:09:49.810 に答える
1

「バックスタック」をより綿密に検討する必要があります。

正確に何が起こっているのかというと、バックスタックは次のように入力されます。

Main activity -> Activity 2 -> Activity 3 -> Activity 4

次に、Activity 4を起動しますMain Activity。したがって、スタックは次のようになります。

Main activity -> Activity 2 -> Activity 3 -> Main Activity

したがって、押し戻すと、に着陸しActivity 3ます。

解決:

あなたがそれらから離れてナビゲートするときはいつでも呼び出しfinish()てください。ActivityまたはIntent.FLAG_ACTIVITY_CLEAR_TOP、すべての中間をクリアするために使用しActivitiesます。

Intent.FLAG_ACTIVITY_CLEAR_TOPの詳細。

于 2012-06-20T09:12:08.760 に答える
0

次のアクティビティに移動するときに前のアクティビティを終了するということは、4番目のアクティビティのボタンクリックイベントから最初のアクティビティを開始するためのコードのfinish();後に​​書き込み、以下のコードを書き込むことを意味します。startactivity(intent);

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();
于 2012-06-20T09:13:12.180 に答える
0

アクティビティ2および3では、を呼び出した後startActivity(intent)、を呼び出しますthis.finish()。これも1つの解決策になります。

于 2012-06-20T09:10:06.200 に答える