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