AlertDialog:尝试完成输入事件但输入事件接收器已被处理掉

时间:2016-08-20 16:17:01

标签: java android alertdialog

当我按下"选择照片"按钮,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();
}

1 个答案:

答案 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