2

私には数十のアクティビティがあります:1-メイン、1-アニメーション、10-その他、そしてそれはより多くのアクティビティのサブセットです(数十)。

メインから、ボタンを介し てその他のいずれかに移動できます。

その他サブセットアクティビティを呼び出し、アニメーションアクティビティを呼び出します 。

サブセットやアニメーションを含む各アクティビティには、メインアクティビティに戻るためのボタンがあります。

すべてのボタンは、ユーザーがアクティビティを修正するために使用します。

問題:メインアクティビティから、デバイスの戻るキーを使用して終了したい。しかし、何が起こるかというと、それは以前のすべての活動を後退するということです。

(各アクティビティの)「メインに戻る」ボタンには、finishonDestroyがあります。だから、なぜそれらの画面/アクティビティが破壊されないのかわかりません...?

コメント/提案/説明をいただければ幸いです-ありがとう

[コードスニペットの追加]

注:フィニッシュ、onDestroy、onStopを移動/追加/削除しました...さまざまな方法を試したため、スニペットに表示されるのは私が試した1つの方法にすぎません...

    //  ---------------------------------------------------------
mainMenu.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // do something
        Intent Maincode = new Intent();
          Maincode.setClassName(
                              "com.bt.test",
                              "com.bt.test.Maincode");
        //  startActivity(Maincode); // go to maincode  
          finish();
          onStop();
        onDestroy();
        startActivity(Maincode); // go to maincode  
    }
}); // end -----------------------------------------------
4

3 に答える 3

3

メイン ボタンに戻るための onClick ハンドラを投稿できますか?

あなたはこのようなことをしているはずです:

Intent i = new Intent(this, MainActivity.class);
startActivity(i);
finish();

編集:このフラグを設定することもできます:

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

これにより、受信アクティビティが既にどこかのスタックにある場合、呼び出しアクティビティと受信アクティビティの間のアクティビティ スタックがクリアされます。

于 2010-10-01T19:07:39.410 に答える
1

onStopまず、自分でor onDestroy(さらに言えば、他の Activity ライフサイクル メソッド) を呼び出してはいけません。Android は の結果としてこれfinishを行いますが、自分で行うとおそらく混乱するでしょう。

第二に、「メインに戻る」リスナーはまったく呼び出してはいけませんstartActivity。代わりに、アクティビティ スタックをクリアしたい場合は、そこで呼び出す必要finishがあります。メインからいくつかのアクティビティが離れている可能性があり、直接戻りたい場合は、startActivityForResultサブアクティビティを起動するときに使用し、「メインボタン」に true フラグを付けて結果インテントを設定する必要があります。次に、中間アクティビティがonActivityResult呼び出され、フラグが表示された場合はすぐに呼び出されるfinishため、制御がメイン アクティビティに戻ります。

編集: 実際には、startActivitywithFLAG_ACTIVITY_CLEAR_TOPは同じ効果を得るためのより簡単な方法です。それに固執します。

于 2010-10-01T19:48:08.937 に答える
0

Documents の状態のように、 Finish はアプリケーション/アクティビティを単に「終了」するだけではありません

「アクティビティが完了し、閉じる必要があるときにこれを呼び出します。ActivityResult は、onActivityResult() を介して起動した人に伝播されます。」

言い換えれば、あなたの完了への呼びかけは、あなたが以前に行った活動を通して伝播します.

于 2012-07-18T02:17:23.023 に答える