3

I am following a tutorial that uses "startActivityForResult" function. I know why this function is used and if we want to use the returned data, we use onActivityResult() function. The thing that I wana know is, why do we pass an Integer to startActivityForResult() function? And where is it used?

Thanks for your kind help!

4

4 に答える 4

4

onActivityResult()開始しているアクティビティが終了すると、その 2 番目の引数が呼び出し元のアクティビティのメソッドに渡されます。これは、異なる結果を互いに区別するためです。

アクティビティが結果のために他のいくつかを呼び出す必要がある場合があり、intそれらのそれぞれに一意のものを指定することで、結果を取得したときに行うべき正しいことを決定できます。

編集:これは例です。

ギャラリーから写真を選択する画面 (アクティビティ A) があり、それを送信する友人を選択するとします。ボタンをクリックしてギャラリーから写真を選ぶアクティビティを開始します。また、アクティビティ A から開始できる「フレンド ピッカー」アクティビティもあるかもしれません。

これらの両方のアクティビティで、ユーザーが選択したデータを返す必要があります。onActivityResult()ユーザーが上記の 2 つのアクティビティを終了すると、アクティビティ A で呼び出されます。requestCodeギャラリー アクティビティのforと「フレンド ピッカー」を指定することstartActivityForResult()で、 で何をすべきかがわかりますonActivityResult()

また、複雑なスキームは必要ないことに注意してくださいrequestCode。ギャラリーとフレンド ピッカーの値1をそれぞれ渡すことができます。2

于 2012-08-06T14:00:34.353 に答える
1

異なる結果を区別することです。それぞれを開始するために異なるインテントを使用するActivity場合があり、通常は次のような定数があります。

ACTIVITY_RESULT_INTENT_1 = 1
ACTIVITY_RESULT_INTENT_2 = 2

したがって、これらのいずれかを に渡すとstartActivityForResult()、これらの要求コードも返され、必要なロジックを使用できるようになります。

于 2012-08-06T14:29:04.780 に答える
0

参考書より

>= 0 の場合、このコードは、アクティビティが終了したときに onActivityResult() で返されます。

だから、それはあなた自身の利益のためです。コードを設定するだけです。必要に応じて、ENUM を使用して適切な戻り値を設定してください。:)

于 2012-08-06T14:00:59.550 に答える
0

ドキュメントによると

requestCode >= 0 の場合、このコードは、アクティビティの終了時に onActivityResult() で返されます。

于 2012-08-06T14:01:01.720 に答える