1

A、B、Cの3つのアクティビティがあるとします。

  • A: ホーム アクティビティ
  • B:情報収集活動
  • C: 情報表示アクティビティ

私の希望の流れは次のようになります:

  • A が B に情報収集のきっかけを与える。
  • B が終了すると、C が情報を取得して表示します。
  • A->B->C->A.
  • C が終了したら、A に戻る必要があります。

私の最初の試み: (数ミリ秒であっても、B の後に A を見たくないために失敗しました)

  1. A が B に情報収集のきっかけを与える。(startActivityAsResult)
  2. B は結果を A に渡し、B : finish(). (onActivityResult)
  3. 次に、A が C をトリガーして表示します。(開始アクティビティ)

私の2回目の試み:(成功しましたが、これにもかかわらず、より良い方法があると思いますか?)

  1. A が B に情報収集のきっかけを与える。(開始アクティビティ)
  2. B は C をトリガーし、B : finish(). (開始アクティビティ)

質問:

APIで見られるように、ナビゲーションフローのシーケンスを定義する別の方法(より簡単/直接的)はありますか?taskBuildernextIntent()

4

2 に答える 2

2

私があなたを正しく理解していれば、ユーザーが「戻る」ボタンを使用して、すでに「使い果たされた」アクティビティに入ることができないようにしたいだけですよね?次のようなものを使用して、AndroidManifest.xml のアクティビティ タグを変更してみてください。

<activity
    android:name="yourpackagename.yourappname.YourActivity"
    android:label="@string/your_app_title"
    android:noHistory="true" >

属性を追加するとnoHistory、問題のアクティビティがアクティビティ履歴からヤンクされ、インテントが説明するように、ユーザーに強制的に前方のみに移動させることができます。

于 2013-04-22T03:56:17.977 に答える
2

戻るボタンのアクティビティ C で、バックスタックをクリアし、A に移動します。

 @Override 
 public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
    onBackPressed();

}

return super.onKeyDown(keyCode, event);
   }

    public void onBackPressed() {
Intent myIntent = new Intent(C.this,A.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear the backstack
startActivity(myIntent);
finish();
return;
   }

AからBからCへ

アクティビティ バック スタックでは、C が一番上にあり、次が B、次が A です。

C で戻るボタンを押すと、アクティビティ C がスタックからポップされて破棄され、前のアクティビティ B がフォーカスされます。したがって、 C から A に移動する場合は、バック スタックをクリアし、 A に移動して現在のアクティビティを終了します。

于 2013-04-22T04:25:34.833 に答える