ButterKnife的采坑记录

本文记录了在使用ButterKnife过程中遇到的控件无法更新的问题及解决方法。作者在Activity和Fragment中尝试使用ButterKnife.bind(this, view),但无法更新控件内容。通过调整绑定方式为ButterKnife.bind(this),问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用mvvm的开发模式,但是又蛋疼于dataBinding的编译问题,终于决定着手使用ButterKnife,小白总免不了遇到坑,小坑怡情,大坑伤神。今天开始持续更新填坑记录。

坑1.ButterKnife.bind(this, view)更新不了控件
具体现象描述:由于fragment中不能使用ButterKnife.bind(this)方法,所以只能改用ButterKnife.bind(this, view)如下:

 View view = inflater.inflate(R.layout.fragment_single_ad, container, false);
 unbinder = ButterKnife.bind(this, view);

后来在ativity中我也使用了此方法:

View view = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.activity_device, null);
setContentView(R.layout.activity_device);
unbinder = ButterKnife.bind(this, view);

在后面更新控件内容:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View view = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.activity_device, null);
        setContentView(R.layout.activity_device);
        unbinder = ButterKnife.bind(this, view);
        setResultState(false);
    }

    @Override
    protected void onStart() {
        super.onStart();
        setResultState(false);
    }

    private void setResultState(boolean isSuccess) {
        if (isSuccess) {
            resultTv.setText("已成功绑定...");
            resultTv.setTextColor(Color.parseColor("#67C03C"));
            resultIv.setImageResource(R.mipmap.right_line);
        }else {
            resultTv.setText("错误");
            resultTv.setTextColor(Color.parseColor("#CF1322"));
            resultIv.setImageResource(R.mipmap.warning_line);
        }
        resultLl.setVisibility(View.VISIBLE);
    }

然而怎么也更新不了,刚开始以为是约束布局造成的布局之间的相互依赖问题导致的位置被挤压了,朝这个方向努力了很久,依旧无果,这不一大早来公司,想了想,对butterKnife产生了怀疑,毕竟对她也比较陌生(最初没怀疑她的原因是控件使用时并没有报找不到控件对象的错误,也就是她的实例化对象的任务是完成了的),试着按如下方式改了一下:

unbinder = ButterKnife.bind(this, view);
改为
unbinder = ButterKnife.bind(this);

运行一次,amazing!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值