ButterKnife离我们而去,作者已经宣称不在更新,取替代他的是官方推出的 View Binding

是的是自从Android studio2.2.2升级项目到Android studio4.0以上

AS提示警告错误

Resource IDs will be non-final by default in Android Gradle Plugin version 8.0, avoid using them as annotation attributes

目前我的AS相关配置

Android Gradle Plugin Version Android Gradle插件版本
7.0.3
Gradle Version 分级版本
7.0.2

通过查询资料ButterKnife宣称

开发已经进入尾声,将不再更新并弃用,推荐我们使用谷歌官方推出的 View Binding

如果非要用也是可以的,但建议未来还是替换到最新的库《View Binding》

View Binding使用

Android Studio 的版本至少需要3.6及以上;

在app的build.gradle中的配置

// 需要 Android Gradle Plugin 3.6.0
android {
    viewBinding {
        enabled = true
    }
}
// Android Studio 4.0+
android {
        buildFeatures {
            viewBinding true
        }
    }

wk_activity_input_chepai.xml布局文件

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/mainViewFl"
	android:layout_width="fill_parent"
    android:layout_height="fill_parent"  
    android:background="@color/white"
    android:gravity="center_horizontal"
	android:orientation="vertical"
     >
	

	<EditText
		android:id="@+id/inputCpEt"
		android:layout_width="330dp"
		android:layout_height="53dp"
		android:background="@drawable/qian_grey_button"
		android:textColor="@color/black"
		android:textSize="24sp"
		android:gravity="center"
		android:layout_marginTop="36dp"
		android:layout_marginBottom="18dp"
		android:singleLine="true"
		android:text=""
		/>
	<Button
		android:id="@+id/inputOkBtn"
		android:layout_width="330dp"
		android:layout_height="53dp"
		android:background="@drawable/wk_login_btn2"
		android:textSize="24sp"
		android:textColor="@color/white"
		android:text="确认"
		/>
</LinearLayout>

 Activity代码

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        WkActivityInputChepaiBinding inputChepaiBinding =
                WkActivityInputChepaiBinding.inflate(LayoutInflater.from(this));
        setContentView(inputChepaiBinding.getRoot());
        inputChepaiBinding.inputBackBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ManualInputActivity.this.finish();
            }
        });

        inputChepaiBinding.inputOkBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                licensePlate = inputChepaiBinding.inputCpEt.getText().toString().trim();
                if(!TextUtils.isEmpty(licensePlate)){
                    ScanningActivity.scanningResult = licensePlate;
                    startActivity(new Intent(ManualInputActivity.this,WkScanningResultActivity.class));
                    ManualInputActivity.this.finish();
                }else {
                    ToastUtils.showWarn(ManualInputActivity.this,"车牌号不能为空!");
                }
            }
        });
    }

如果在使用的过程中不想为某个布局文件生成binding类在布局中

绑定类是创建布局文件就生成好的,则想要忽略某个布局需要在根布局添加如下属性

<androidx.constraintlayout.widget.ConstraintLayout
      tools:viewBindingIgnore="true" >
 
</androidx.constraintlayout.widget.ConstraintLayout>

注意如果找不到Viewbinding(WkActivityInputChepaiBinding)

xml布局文件名称必须和Viewbinding。

例如:a_activity.xml ,Viewbinding 就是 AActivityBinding

后续

有空我会出一个更加全面的Viewbinding使用,其他特殊情况使用方式会有差异,比如动态绑定、adapter、frgment绑定等...

总结

学无止境,作为程序员老的知识还没消化完,新的知识及架构又回来,这是该行业的常态,所以心态必须好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PYB3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值