1

私はいくつかの活動のようなものを持っています

A-> Splash Screen
B-> Home Screen
C-> a List activity
D-> a View activty
E-> a List activity
F-> a View activty

通常のアプリケーションは A -> B で始まります

次に、ユーザーがリスト アクティビティを選択します

次に、ユーザーがリスト アクティビティからビューを選択します。

私の問題は、アクティビティスタックをクリアすることです。

私のアプリケーションは、リストまたはビューのアクティビティをアクティビティにジャンプします (facefook スタイルのナビゲーションを使用)

たとえば、ユーザーはリスト アクティビティ C を選択し、次にビュー アクティビティ D を選択します。ハット ポイントで、ユーザーはアクティビティ E にジャンプできます。アクティビティ E でユーザーが [戻る] ボタンを押すと、ユーザーはアクティビティ D に移動します。

それをアクティビティB(ホーム)に行きたいです。

つまり、家での活動なしで活動状態をクリアしたいということです。

これどうやってするの ?。

わいせつな英語でごめんなさい。

ありがとう。

4

3 に答える 3

2

次のように、戻るボタンの押下をインターセプトできます。

@Override
public void onBackPressed() {
    // You want to start B Activity
    Intent a = new Intent(this, B.class);

    // But you dont want it on top of E.
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    // Launching this will now remove every activity on top of B and bring B to front, not! relaunch it.
    startActivity(a);
}

Android Intent flagsTasks and Back Stack Documentationを確認してください。

良い1日を!

編集:

戻るが押されたときにアプリを閉じたい場合:

@Override
public void onBackPressed() {
    moveTaskToBack(true);
}
于 2012-05-28T21:07:56.207 に答える
1

ユーザーがすべてのアクティビティから B に戻るようにするにはfinish()、インテントを呼び出すときに他のすべてのアクティビティから呼び出すことができます。このようにして、それらはアクティビティ スタックから削除されます。

さらに、戻るボタンの動作をオーバーライドできます。

@Override
public void onBackPressed() {
   Intent setIntent = new Intent(Intent.ACTION_MAIN);
   startActivity(setIntent);
}

しかし、それが本当にあなたが望むものであることを確認してください。ユーザーエクスペリエンスに非常に悪いことをしているように見えるからです。アクティビティ スタックとタスクの詳細をお読みください。戻るボタンのデフォルトの動作をオーバーライドすることは避けるべきです。

于 2012-05-28T21:02:08.650 に答える
1

タグ android:noHistory="true" を AndroidManifest.xml ファイルのアクティビティ要素に使用できます。このタグにより、アクティビティのスタックにアクティビティを書き込まないようにすることができます。

于 2012-05-28T21:09:16.990 に答える