A->B->C->D の 4 つのアクティビティがあります。すべての A、B、C アクティビティで、ユーザーはデータを入力する必要があります。ユーザー データが正しい場合、C アクティビティですべてのデータがサーバーに送信されます。 DアクティビティとすべてのアクティビティA、B、Cがスタックから削除されました。データが正しい場合、ユーザーにデータを再入力する必要があります。つまり、バックプレスでC-> B-> Aに移動する必要があります。私の質問ユーザーがDアクティビティに入ったときにA、B、Cアクティビティを削除する方法です。
6 に答える
私にとっても興味深い正解ですが、解決策を提供できます。たとえば、アクティビティ A を O から開始します。O->A->B->C->D。アクティビティ O では、Android マニフェストに入れることができます。android:launchMode="singleTop"
次に、データに問題がなければ、アクティビティ O をフラグ「FLAG_ACTIVITY_CLEAR_TOP」で開始できます。スタック A、B、C から削除され、メソッドonNewIntent (Intent intent)
http://developer.android.comが呼び出されます。 /reference/android/app/Activity.html#onNewIntent(android.content.Intent ) in O で、アクティビティ D を開始できます。
startActivityForResultを使用してアクティビティを開始し、たとえばアクティビティDからsetResultを呼び出すことができます。また、Cアクティビティでは、アクティビティの結果をリッスンし、この結果の終了アクティビティに関連するかどうか、またはCアクティビティからsetResaltを呼び出すことができます...
いくつかの変更を加えて、このコードを試してください。
Intent intent = new Intent(this, D.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities
startActivity(intent);
D アクティビティをそこに移動する場合は、条件を確認する必要があり、条件が満たされている場合は、次のアクティビティ (つまり、D) に入る必要があります。その場合、次のコードを使用する必要があります。
Intent intent = new Intent(this,D.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
バックプレスで、finish() を使用する必要があるとします。つまり、C -> B -> A のように戻ります。
ここでActivityのパブリックメソッドstartActivity(Intent i)とfinish()を探してみてください
使用法では、次のようになります。
Intent i = new Intent(MainActivity.this, MainActivity.class);
startActivity(i);
finish();
これが役立つことを願っています:D