Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onClick中的第二个意图在第一个意图之前执行_Android_Android Intent_Android Activity_Camera_Android Gallery - Fatal编程技术网

Android onClick中的第二个意图在第一个意图之前执行

Android onClick中的第二个意图在第一个意图之前执行,android,android-intent,android-activity,camera,android-gallery,Android,Android Intent,Android Activity,Camera,Android Gallery,我正在编写一个Android应用程序,并面临以下问题: 我需要从图库中选择一个图像,然后将其发送到其他活动(并转到该活动)。当我只有一个从图库中选取图像的意图时,它做得很好,打开图库,让你选取一个图像,然后什么都没有发生,很好。 但当我将另一个意图添加到其他活动时,它会忽略第一个意图 ImageButton gallery; @Override protected void onCreate(Bundle savedInstanceState) { super.onCr

我正在编写一个Android应用程序,并面临以下问题: 我需要从图库中选择一个图像,然后将其发送到其他活动(并转到该活动)。当我只有一个从图库中选取图像的意图时,它做得很好,打开图库,让你选取一个图像,然后什么都没有发生,很好。 但当我将另一个意图添加到其他活动时,它会忽略第一个意图

ImageButton gallery;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gallery = (ImageButton) findViewById(R.id.imageButton2);
        gallery.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);

                goToConfirmActivity();
            }
        });
    }
    public void goToConfirmActivity(){
        Intent goToConfirmIntent = new Intent(MainActivity.this, confirmActivity.class);
        goToConfirmIntent.putExtra("image", uri);
        startActivity(goToConfirmIntent);
    }

它直接进入
confiractive
,而无需从图库中选择图片。我想知道如何解决这个问题。提前谢谢。

您正在呼叫
gotoconfirmation()Intent.ACTION\u GET\u CONTENT之后立即执行code>。由于获取内容的调用是异步的,所以控件将继续执行下一行。因此,
gotoconfiractivity()并启动下一个意图。要避免在ActivityResult上执行此覆盖,请执行以下操作

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == PICK_IMAGE_REQUEST){
        //You can get URI from intent data
        goToConfirmActivity();
    }
}

您应该覆盖onActivityResult,这样您就可以检查用户是否真的从gallery中拾取了图像,或者在打开gallery后按下了back按钮

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK){
        Uri uri= data.getData();
        goToConfirmActivity(uri);
    } else {
        //Some error has occurred.
    }
}
您的GoToConfigActivity方法应该如下所示:

void goToConfirmActivity(Uri uri){
    Intent goToConfirmIntent = new Intent(MainActivity.this, confirmActivity.class);
    goToConfirmIntent.putExtra("image", uri);
    startActivity(goToConfirmIntent);
} 

重写onActivityResult,然后在从结果中获取图像uri后调用gotoConfigActivity()