我在dialog.show()
面对这个问题。完成谷歌搜索,尝试修改没有任何帮助我。
public void openCameraOrGallery(){
final Dialog dialog = new Dialog(LoginActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.choosecamera);
dialog.getWindow().setLayout(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT);
txtGalleryPhoto = (TextView) dialog
.findViewById(R.id.txt_gallery_photo);
txtCamera = (TextView) dialog.findViewById(R.id.txt_camera);
btnClose = (ImageButton) dialog.findViewById(R.id.btn_close);
btnClose.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
txtGalleryPhoto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
//dialog.dismiss();
}
});
txtCamera.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
//dialog.dismiss();
}
});
dialog.show();
}
答案 0 :(得分:1)
显然Leaked Window Exception
会出现在你的代码中。
您不应该在显示对话时更改活动(因为您的上下文会被更改)。
因此,您必须不断检查当前上下文,如果当前上下文中有更改,您应该忽略对话。
在您的情况下,在开始新活动之前解除对话
更新
正常对话将自动取消。这是实现登录检查的一种棘手方法。
alert.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button button = alert.getButton(AlertDialog.BUTTON_POSITIVE);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Code to check the login credentials.
if(everythingIsOK)
{
dialogue.dismiss();
}
else
{
// Acknowledge the user
}
}
});
}
});