アクティビティ(たとえばA)では、別のアクティビティ(B)の結果に応じて特定のタスクを実行する必要があります。 startActivityForResult()を使用してアクティビティBを開始します。別のアクティビティの結果を待ちます
//Statements
//startActivityForResult(activityB)
//get the result in some local variable for activity A. result is a boolean
//if(result==true) do something
//else do something else
今、私が直面してる問題は、活動Bを開始した後、それが代わりにBから到着する結果を待たないということである (活動Aで):擬似コードは次のようなものですブール値のデフォルト値が使用され、使用されます。 どのような解決策ですか?
この特定のブロックが別のスレッドにあった場合、同期ブロックを作成し、アクティビティBを開始した後にwait()を発行してからonActivityResult()でnotify()を発行します。 しかし、1つのスレッドしかないので、それは正しいオプションではありませんか?
アクティビティBは、ユーザー入力のYes/Noを取って返します。したがって、それを開始するとすぐに結果が得られません
私はactivityBの結果を得るのに問題はありません。私は希望の結果を得る。しかし、activityAでは、startActivityForResult()行の後で、変数resultのデフォルト値を使用するだけです。 アクティビティBがYes/Noのユーザ入力を受け取り、それを返すことを言及する必要があります。だから、それを開始するとすぐに結果が得られません。 – Alabhya
@Alabhya: "しかし、activityAでは、startActivityForResult()行の後、変数結果のデフォルト値を使用するだけです。" - もちろん。 'startActivityForResult()'はブロッキング呼び出しではなく、アクティビティーは戻ったときにまだ開始されていません。 – CommonsWare
ああ私はそれがブロックされていると思った。だから、代わりの方法は何でしょうか?待機通知やそのようなものを使用する方法はありますか? – Alabhya