使用dialog对话框时第二次点击报错 IllegalStateException

使用dialog弹出一个view 第二次点击弹出时报错


java.lang.IllegalStateException : The specified child already has a parent. You must call removeView() on the child's parent first.

解决办法: 

在dialog dismiss时removeView ;

((ViewGroup) view.getParent()).removeView(view); 

代码:

        private View view = LayoutInflater.from(context).inflate(R.layout.dialog_item, null);

        layout.setOnClickListener(new OnClickListener() {
            private AlertDialog dialog;
            private EditText editText;
            private Button button;
            private ImageView image;

            @Override
            public void onClick(View v) {
                if (dialog == null) {
                    dialog = new AlertDialog.Builder(context).create();
                    //dialog.setView(view,0,0,0,0);
                    dialog.setCanceledOnTouchOutside(true);
                    dialog.setView(new EditText(context));
                }
                dialog.show();
                Window window = dialog.getWindow();
                window.setContentView(view);
                editText = (EditText) window.findViewById(R.id.editText);
                image = (ImageView) window.findViewById(R.id.image);
                image.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        ((ViewGroup) view.getParent()).removeView(view);
                        dialog.dismiss();
                    }
                });
                button = (Button) window.findViewById(R.id.button);
                button.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        ((ViewGroup) view.getParent()).removeView(view);
                        dialog.dismiss();
                    }
                });
            }
        });


参考链接

猜你喜欢

转载自blog.csdn.net/qq_30837235/article/details/50999947