当我按下"选择照片"按钮,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();
}
答案 0 :(得分:1)
我应该早一点注意到这一点,但我猜你早先发布了正确的代码。目前的问题是,我们正在尝试将"Choose from Gallery"
与"Choose Photo"
匹配,false
始终为private void dispatchTakePictureIntent() {
final CharSequence[] options = {"Take Photo", "Choose Photo", "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("Cancel")) {
dialog.dismiss();
} else {
Intent intent;
int requestCode;
if (options[which].equals("Take Photo")) {
intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
} else { // from doc
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
}
switch (id) {
case HAPPY_ID2:
requestCode = REQUEST_HAPPY_PHOTO;
break;
case SURPRISED_ID2:
requestCode = REQUEST_SURPRISED_PHOTO;
break;
case AFRAID_ID2:
requestCode = REQUEST_AFRAID_PHOTO;
break;
case UPSET_ID2:
requestCode = REQUEST_UPSET_PHOTO;
break;
default:
requestCode = REQUEST_SAD_PHOTO;
break;
}
startActivityForResult(intent, requestCode);
}
}
});
。所以,我们需要纠正这一点。我还重构了你的代码:
HttpContext.Current.User.Identity.IsAuthenticated