私のAndroidアプリケーションでは、最初にカフェを検索します。ユーザーがカフェを1つ選択すると、次のアクティビティでその詳細が表示されます。その後、ユーザーはカフェの地図を表示できます。ユーザーが[完了]ボタンをクリックすると、最初のアクティビティである検索結果にユーザーをリダイレクトする必要があります。では、どうすればこれを行うことができますか?finish()メソッドを呼び出すと、現在のアクティビティのみが閉じられます。
前もって感謝します !
私のAndroidアプリケーションでは、最初にカフェを検索します。ユーザーがカフェを1つ選択すると、次のアクティビティでその詳細が表示されます。その後、ユーザーはカフェの地図を表示できます。ユーザーが[完了]ボタンをクリックすると、最初のアクティビティである検索結果にユーザーをリダイレクトする必要があります。では、どうすればこれを行うことができますか?finish()メソッドを呼び出すと、現在のアクティビティのみが閉じられます。
前もって感謝します !
続行するすべてのアクティビティで finish() を使用するか、このフラグFLAG_ACTIVITY_CLEAR_TOPを使用して最初のアクティビティを開始すると、最初のアクティビティのトップ アクティビティがすべてクリアされ、最初のアクティビティがトップになります。次のように使用します。
Intent intent = new Intent(this, yourFirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
//DOES NOT FINISH ALL ACTIVITY
Intent intent=new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
//FINISH ALL ACTIVITY WHICH IS IN STACK ABOVE TARGET ACTIVITY
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
thiss フラグでそのアクティビティを起動しますIntent.FLAG_ACTIVITY_CLEAR_TOP
参考: Androidのドキュメント
ユーザーが以前のアクティビティ B に戻ることができるようにするには、Intent.FLAG_ACTIVITY_CLEAR_TOP を使用しないでください。
代わりに、アクティビティ B は startActivityForResult(...C...) を使用する必要があり、同じアクティビティ B は onActivityResult() で結果を確認し、アクティビティ C で DONE がクリックされた場合は終了する必要があります。その後、アクティビティ B が正常に表示されます。
Intent.FLAG_ACTIVITY_CLEAR_TOP
最初のアクティビティ以外はすべてクリアされます。これはかなりうまくいくはずです。
Android Application Developer Forumによると、このアクティビティは次の方法で開始する必要があります。
startActivity(intent);