使用xml文件转换而来的view的小问题

最近在使用由xml文件转换成的view犯了一个令我郁闷的bug,查找了相关的资料,终于找到了答案,同时也使自己对Android中的View的数据结构有了更深的认识,在此记下,以防自己再犯类似的错误。
先附上我的错误代码。
private LayoutInflater factory;
private View myView;
private Dialog dialog;
private Button but_save;
private Button but_cancel;
        but_save = mActivity.findViewById(R.id.but_save);
        but_cancel = mAcivity.findViewById(R.id.but_cancel);
        factory = LayoutInflater.from(mActivity);
        myView = factory.inflate(R.layout.dialog, null)
        this.setting_button.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                dialog = new AlertDialog.Builder(mActivity).setView(myView).create();
                dialog.show();

            }

        });
    this.but_cancel.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }

        });
后来我发现错误的原因是:上面由xml文件转成的View是没有上一级的父View,说的通俗一点就是没有爸爸,当我们将它填充到Dialog中时即给是说这个由xml文件转换成的View有了父View--Dialog。但是在but_cancel的监听事件中我并没有将这个Dialog空件给kill掉,仅仅是dismiss掉了,在下一次的but_save的监听事件中又一次new了一个新的Dialog控件,并且见转换而来的view填到了新的Dialog中,即给又给它找了一个爸爸,出现了错误。在Android中View采用了树形数据结构,一个View只能有一个父View。在此犯了一个低级的错误,希望大家一次为鉴。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值