11

requestCode と resultCode の概念を正しく理解しているかどうか疑問に思っています。基本的に、アクティビティに関連付けられた任意の整数 (requestCode) があります。たとえば、メモ帳のチュートリアルでは、

private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;

次に、startActivityforResult(intent, requestCode) を使用して、「メモの作成」アクティビティなどのアクティビティを開始します。そのアクティビティで何かを実行し、resultCode を返します。

親アクティビティでは、onActivityResult(requestCode, resultCode, intent) で resultCode を検出します。次に、requestCode を使用して返されるアクティビティを確認し、resultCode を使用してそのアクティビティの結果を確認し、インテントの「エクストラ」を使用して返されたデータを取得できます。


RESULT_CANCELED のように、組み込みの resultCode について何か特別なことはありますか? 開発者サイトのドキュメントは、組み込みの結果が単に整数であることを示唆しているようです。

そして、これは本当に厄介になる可能性があるように思えますか?たとえば、起動できるアクティビティが 10 個ある場合、どのアクティビティが返されているかを確認するための巨大なonActivityResult 関数が必要になるのではないでしょうか?

4

2 に答える 2

12

RESULT_CANCELEDのような組み込みのresultCodesについて何か特別なことはありますか?開発者サイトのドキュメントは、組み込みの結果が単なる整数であることを示唆しているようです。

はい。これらのコードは「標準」の応答です。たとえば、開始したアクティビティRESULT_CANCELED(特に、OSアクティビティまたはカメラなどの標準アプリ)が戻った場合、そのアクティビティはキャンセルされたことを意味します。これらの標準的な結果は、ドキュメントに従って解釈する必要があります。実際、そうしない強い理由がない限り、アクティビティではこれらの標準的な結果を使用する必要があります(他のアプリ開発者がアクティビティを開始するのが簡単になるようにするため)。

そして、これは本当に厄介になる可能性があるように私には思えますか?たとえば、起動する可能性のあるアクティビティが10個ある場合、返されるアクティビティを確認するための巨大なonActivityResult関数が必要になりますね。

はい。これらを処理するには、switchステートメントを使用します。

于 2011-08-08T17:24:40.037 に答える
1

整数について特別なことは何もありません。これらの定数は単なる規則です。onActivityResult は、結果をメソッドにディスパッチして処理する単一の switch ステートメントである可能性があります...巨大である必要はありません。もちろん、あなたがそうであるように、記号定数を使用する必要があります。

于 2011-08-08T17:24:07.807 に答える