2

A->B->C->D の 4 つのアクティビティがあります。すべての A、B、C アクティビティで、ユーザーはデータを入力する必要があります。ユーザー データが正しい場合、C アクティビティですべてのデータがサーバーに送信されます。 DアクティビティとすべてのアクティビティA、B、Cがスタックから削除されました。データが正しい場合、ユーザーにデータを再入力する必要があります。つまり、バックプレスでC-> B-> Aに移動する必要があります。私の質問ユーザーがDアクティビティに入ったときにA、B、Cアクティビティを削除する方法です。

4

6 に答える 6

2

私にとっても興味深い正解ですが、解決策を提供できます。たとえば、アクティビティ 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 を開始できます。

于 2012-10-08T07:33:04.390 に答える
0

startActivityForResultを使用してアクティビティを開始し、たとえばアクティビティDからsetResultを呼び出すことができます。また、Cアクティビティでは、アクティビティの結果をリッスンし、この結果の終了アクティビティに関連するかどうか、またはCアクティビティからsetResaltを呼び出すことができます...

于 2012-10-08T07:22:21.403 に答える
0

いくつかの変更を加えて、このコードを試してください。

Intent intent = new Intent(this, D.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities
startActivity(intent);
于 2012-10-08T07:32:38.007 に答える
0

D アクティビティをそこに移動する場合は、条件を確認する必要があり、条件が満たされている場合は、次のアクティビティ (つまり、D) に入る必要があります。その場合、次のコードを使用する必要があります。

Intent intent = new Intent(this,D.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

バックプレスで、finish() を使用する必要があるとします。つまり、C -> B -> A のように戻ります。

于 2012-10-08T07:29:01.590 に答える
-1

ここでActivityのパブリックメソッドstartActivity(Intent i)とfinish()を探してみてください

使用法では、次のようになります。

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

これが役立つことを願っています:D

于 2012-10-08T07:34:31.860 に答える