1

アプリには、Act1-> Act2-> Act3-> Act4->Act5の5つのアクティビティがあります。

上記のように、すべてのアクティビティは一方向に進みます。Act5のタスクが正常に完了した後、Act2を再度呼び出す必要があるため、Act2が正常に機能し、Act2startActivity(callIntent)が表示されます(Act2を再度表示するためにAct5で使用しました)。これは、Act2の[戻る]ボタンをクリックすると、Act1(startActivity(callIntent)Act1をもう一度表示するためにAct2で使用しました)が欲しいものです.....しかし、問題は、Act1の[戻る]ボタンをクリックすると、 Act2で私。しかし、Act1が最初の最初のアクティビティであるため、そこから終了したいと思います。

インテントを作成してstartActivityを呼び出す代わりに、非表示のアクティビティにフォーカスを設定するにはどうすればよいですか。

何か案が?助けてください。

4

2 に答える 2

0

長い調査の結果、アプリ内のすべてのアクティビティの「バックスタック」についてかなり理解しました。

別のアクティビティに移動するたびに、また以前に使用Intent.startActivity()したアクティビティを開くためflag FLAG_ACTIVITY_NEW_TASKに、「バックスタック」に新しいアクティビティを追加するたびに。

FLAG_ACTIVITY_CLEAR_TOPを使用して「バックスタック」から前のアクティビティを呼び出しているときにインテントフラグを試しIntent.startActivity()ましたが、前のアクティビティをコールバックして、呼び出し元の1つのアクティビティより上のすべてのスタックトップアクティビティをクリアするという解決策が得られました。これで、戻るボタンが必要に応じてうまく機能するようになりました。

前のアクティビティを呼び出す私の問題を見てみましょう A = activity; A1->A2->A3->A4->A5->B2。戻るボタンをクリックするとA1アクティビティが表示され、A1の戻るボタンをクリックすると、A5の後に呼び出されたB2アクティビティが再び表示されます。

in A5アクティビティを使用して、FLAG_ACTIVITY_CLEAR_TOP再度A2(新しいアクティビティを作成するのではなく、貴重なアクティビティを呼び出す)を呼び出した後、次の状況になります。

A = activity; A1->A2->A3->A4->A5

以前のA2アクティビティを呼び出し、次のシナリオがあります。 A1->A2それだけ。

ありがとう。

于 2013-01-16T10:49:11.777 に答える
0

次のコードの代わりに(フラグ付きIntent.FLAG_ACTIVITY_NEW_TASK):

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
callIntent.setClass(CurrentActivity.this,PreviousActivity.class);
startActivity(callIntent);

次のものを使用してみてくださいIntent.FLAG_ACTIVITY_CLEAR_TOP

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
callIntent.setClass(CurrentActivity.this,PreviousActivity.class);
startActivity(callIntent);
于 2013-01-16T11:00:03.337 に答える