【发布时间】:2016-08-21 06:17:57
【问题描述】:
当我按下“选择照片”按钮时,AlertDialog 似乎取消了,我在 logcat 中收到以下消息:Attempted to finish an input event but the input event receiver has already been disposed
这在昨晚确实有效,我不记得对这个功能进行了任何更改。请帮忙。
private void dispatchTakePictureIntent() {
final CharSequence[] options = {"Take Photo", "Choose from Gallery", "Cancel"};
final AlertDialog.Builder cameraChoice = new AlertDialog.Builder(Person2Screen.this);
cameraChoice.setTitle("Take/choose new photo");
cameraChoice.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (options[which].equals("Take Photo")) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
//savePicture(cameraIntent);
if(id.equals(HAPPY_ID2))
startActivityForResult(cameraIntent, REQUEST_HAPPY_PHOTO);
if(id.equals(SURPRISED_ID2))
startActivityForResult(cameraIntent, REQUEST_SURPRISED_PHOTO);
if(id.equals(AFRAID_ID2))
startActivityForResult(cameraIntent, REQUEST_AFRAID_PHOTO);
if(id.equals(UPSET_ID2))
startActivityForResult(cameraIntent, REQUEST_UPSET_PHOTO);
if(id.equals(SAD_ID2))
startActivityForResult(cameraIntent, REQUEST_SAD_PHOTO);
} else if (options[which].equals("Choose Photo")) {
Intent galleryIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
if(id.equals(HAPPY_ID2))
startActivityForResult(galleryIntent, REQUEST_HAPPY_PHOTO);
else if(id.equals(SURPRISED_ID2))
startActivityForResult(galleryIntent, REQUEST_SURPRISED_PHOTO);
else if(id.equals(AFRAID_ID2))
startActivityForResult(galleryIntent, REQUEST_AFRAID_PHOTO);
else if(id.equals(UPSET_ID2))
startActivityForResult(galleryIntent, REQUEST_UPSET_PHOTO);
else if(id.equals(SAD_ID2))
startActivityForResult(galleryIntent, REQUEST_SAD_PHOTO);
} else if (options[which].equals("Cancel")) {
dialog.dismiss();
}
}
});
final CharSequence[] pictureNumbers = {"Picture 1", "Picture 2", "Picture 3", "Reinforcer"};
AlertDialog.Builder selectPhotoNumber = new AlertDialog.Builder(Person2Screen.this);
selectPhotoNumber.setTitle("Which picture would you like to set/change?");
selectPhotoNumber.setItems(pictureNumbers, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (pictureNumbers[which].equals("Picture 1")) {
index = 1;
cameraChoice.show();
} else if (pictureNumbers[which].equals("Picture 2")) {
index = 2;
cameraChoice.show();
} else if (pictureNumbers[which].equals("Picture 3")) {
index = 3;
cameraChoice.show();
} else if (pictureNumbers[which].equals("Reinforcer")) {
index = 4;
cameraChoice.show();
}
}
});
selectPhotoNumber.show();
}
【问题讨论】:
-
尝试在
startActivityForResult()之后立即调用return。 -
@Shaishav 没用 :(
-
我的并没有真正崩溃。如果您使用的是 Instant Run,请手动删除该应用并重试。顺便说一句,目前你的
requestCode都是一样的。 -
@Shaishav 手动卸载无效。我添加了代码来为 AlertDialog 提供更多上下文。我打电话给另一个。所有其他按钮功能都可以正常工作;只是不是“选择图片”那个...
标签: java android android-alertdialog