私は、ユーザーがアイテムを選択することを期待するアクティビティを持っていますが、アイテムを選択せずに戻るボタンをクリックすることもできます。この「項目選択」アクティビティは、startActivityForResult()で開始されます。明示的にRESULT_CANCELEDに設定する必要がありますか?
私は2つのことが不思議でした。最初に、アイテムが実際に選択されたときにsetResult(RESULT_OK)だけで十分ですか?つまり、明示的に設定しないとRESULT_OKに設定されていない結果に依存できますか?これは(初期化されていない)結果に依拠するのに十分でない場合
第二には、それは大丈夫setResult()を複数回、SetResultを呼び出し、その後RESULT_CANCELEDに結果を「初期化」、そして初めて(RESULT_OK)を呼び出すことですユーザがアイテムを選択してアクティビティを終了する前に? documentationから
私はドキュメンテーションにそれを見ました。これは質問を促したものです。私が記述している事例は、その活動が「失敗する」ということではない。 Android APIのドキュメントでは、RESULT_CANCELEDがデフォルトであることを前提とした安全な仮定ではなく、setResultを2回以上呼び出すかどうかは明確ではありません。 –
onActivityResultメソッドのドキュメントの別の行: "アクティビティが明示的にそれを返すか、結果を返さなかったか、操作中にクラッシュした場合、resultCodeはRESULT_CANCELEDになります。"したがって、結果を返さない場合、ユーザーが戻るボタンでアクティビティを終了する前に、結果はRESULT_CANCELLEDになります。 – Dirol
setResultを複数回呼び出すことについては、実際にはdocでは未定義です。だから、私はそれに頼らないだろう。現在のAPIでうまく動作しても、将来的には動作するという保証はありません。 – Dirol