使用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();
}
});
}
});