近期有个需求需要在自定义AlertDialog上添加一个输入框,并拿到输入的信息发送给后台.
开发中有遇到些之前没有接触过的问题,所以记录下来
如果需要自定义的话
AlertDialog mDialog = new AlertDialog.Builder(this).create();
View view = getLayoutInflater().inflate(R.layout.dialog, null);
Objects.requireNonNull(mDialog.getWindow()).setBackgroundDrawableResource(android.R.color.transparent);
mDialog.setView(view);
mDialog.setCancelable(true);
mDialog.show();
view.findViewById(R.id.im_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//点击事件要做的事情
mDialog.dismiss();
}
});
但是 在自定义的Dialog 上find Button 的id 会报错 这个问题咱是还没有解决 用了另一种解决方法
Dialog默认的 setPositiveButton() 在里面的点击时间里做一些发送逻辑
但问题来了 首次点击按钮弹出Dialog时没有问题 但当关闭后再点击
会报 异常 IllegalStateException
完整的是
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView
报错原因是 view绘制冲突问题 需要找到父parent 的view 进行调用removeView()
但怎么找到父view 的parent呢?
所以找到了这个解决办法
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child’s parent first.
然后找到了后面这篇文章 完美解决 记录一下 干饭去啦!!