startActivityForResult中requestCode的含义是什么

use*_*988 51 android

我想知道我是否正确理解requestCode的概念.这个整数是什么,并且我设置它的整数是否重要:

private static int CAMERA_REQUEST = ???;
Run Code Online (Sandbox Code Playgroud)

谢谢

bib*_*tha 69

requestCode可帮助您识别您回来的Intent.例如,假设您的活动A(主要活动)可以调用活动B(摄像机请求),活动C(音频录制),活动D(选择联系人).

每当随后调用的活动B,C或D完成并需要将数据传回A时,现在您需要在onActivityResult中识别要从哪个Activity返回并相应地处理您的处理逻辑.



    public static final int CAMERA_REQUEST = 1;
    public static final int CONTACT_VIEW = 2;

    @Override
    public void onCreate(Bundle savedState)
    {
        super.onCreate(savedState);
        // For CameraRequest you would most likely do
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, CAMERA_REQUEST);

        // For ContactReqeuest you would most likely do
        Intent contactIntent = new Intent(ACTION_VIEW, Uri.parse("content://contacts/people/1"));
        startActivityForResult(contactIntent, CONTACT_VIEW);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (resultCode == Activity.RESULT_CANCELED) {
            // code to handle cancelled state
        }
        else if (requestCode == CAMERA_REQUEST) {
            // code to handle data from CAMERA_REQUEST
        }
        else if (requestCode == CONTACT_VIEW) {
            // code to handle data from CONTACT_VIEW
        }
    }


我希望这澄清了参数的使用.

  • @DevDave告诉你的异常会抛出一条明确说明的消息(就像有趣的那个问你,如果你忘了向清单声明一些活动,这是一种官方的).请参阅http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/support/v4/app/FragmentActivity.java#FragmentActivity.startActivityForResult%28android .content.Intent%2Cint 29% (2认同)

Gan*_*nus 9

你看我的例子在这里.您必须设置的整数可以是任何一个正数.只是不要让它们一样,你不想混它们,是吗?并且不要将它们设置为0 - 它返回没有结果,恕我直言,我有0的奇怪行为.至于否定,也不要使用它们,它们被保留用于其他callActivities函数中的否定结果.

  • 谢谢,但我仍然不知道它的目的.它只是一个标识符,我可以随机选择它吗? (2认同)
  • 是.是你,谁会读取请求代码,只有*写入*和*比较*相同的值. (2认同)

kaz*_*med 7

说明如图所示.

 public void onActivityResult(int requestCode, int resultCode, Intent data)
Run Code Online (Sandbox Code Playgroud)

appintents仅通过上述方法接收来自不同的结果.那么您如何理解哪些意图回复了您?出于这个原因,在调用意图之前,我们放置了一个自定义的TAG/Label,它被调用requestCode.通过我们自己定义的,requestCODE我们可以检查我们收到的意图结果.

requestCode示例中,我为Camera Intent提供了1001.您可以输入任何所需的号码.1200或2001或21.任何正整数范围为~2 ^ 16.

见附图.