推广

安卓大变天!ButterKnife被弃用:Resource IDs will be non-final in Android Gradle Plugin version 5.0

iseeyu2年前 (2024-02-22)推广124

image

是的,在未来,所有的R.id.*都会变成变量,尽管不知道这样做是出于什么原因。

image

ButterKnife的作者也跳出来宣称,开发已经进入尾声,将不再更新并弃用,推荐我们使用谷歌官方推出的 View Binding:

image

有趣的是,我在注意到这个改动前,推送了一个带着这个警告的版本,而这个版本并没有发生任何的异常崩溃。

也就是说,如果项目紧张,暂时保持不动也没有题,但我们仍需要逐渐的将使用ButterKnife的项目迁移到ViewBinding

1.使用View Binding

首先,我们需要激活这个工具,在app的build.gradle中,添加如下内容:

android {
        ...
            buildFeatures {
                viewBinding = true
            }
    }

2.在Activity中使用

假设我们有一个activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
     <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>
</RelativeLayout>

AndroidStudio会检测所有的XML文件,使用驼峰法命名+Binding后缀,创建绑定类:比如activity_main,会生成一个ActivityMainBinding类。

我们这样使用它:

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //注意!!!在setContentView之前!!!
        ActivityMainBinding inflate = ActivityMainBinding.inflate(getLayoutInflater());
         //注意!!!这里是inflate.getRoot(),不是R.layout.activity_main
        setContentView(inflate.getRoot());
         //这里的tv就是XML中的id为tv的TextView
        inflate.tv.setText("Fxxk gooooooogie !!!");
    }

用起来还是蛮简单的,但这仍然掩盖不了谷歌的迷惑行为,ButterKnife的注解式编程代码更加清晰不是嘛~

image

3.在Fragment中使用

假设我们有一个fragement_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
     <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />
</RelativeLayout>

我们这样使用它:

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        FragementMainBinding inflate = FragementMainBinding.inflate(inflater, container, false);
        inflate.tv.setText("Holy G00gie");
        return inflate.getRoot();
    }

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://0291.com.cn/post/56489.html

相关文章

淘宝店铺到期如何重新开店,淘宝保证金到期了怎么办(淘宝店铺押金怎么退)

淘宝店铺到期如何重新开店,淘宝保证金到期了怎么办(淘宝店铺押金怎么退)

淘宝店铺注册门槛是比较低的,只需要商家提供身份证或者营业执照,就可以成功的将店铺注册下来,但是有些商家没有精力运营店铺,等过了一段时间之后,店铺就到期了...

我来分享几种常用的网站推广手段(最经典最常用的网站推广手段方式是)

我来分享几种常用的网站推广手段(最经典最常用的网站推广手段方式是)

目前,网络推广主要有以下形式: 1、登录搜索引擎 2、电子邮件推广 3、网络广告 4、交换链接/广告互换 5、在B2B网站上发布信息或登记注册 6、在新闻组或论坛上发布网站信息 7、其他网络推广方式 这几种方式各有特点,下面我们逐一对其进行介绍和评估。 1. 登录搜索引擎 搜索引...

向分销市场纵深挺进,华为与伙伴的一次蓝海远航

向分销市场纵深挺进,华为与伙伴的一次蓝海远航

2022年华为企业业务保持快速增长,但华为携手伙伴持续做大产业、做大蛋糕的追求没有停歇。2023年,一个明确的信号,华为要重兵投入向纵深挺进,锚定中小企业数字化转型的商业机会。2022年以来,华为便提出向地市区县下沉的市场发展策略,并协同伙伴向商业市场发力,做广市场覆盖,这...

超级推荐出价多少才有展现

超级推荐出价多少才有展现

在超级推荐千牛小程序中新建计划最多可以添加16个宝贝推广,4个系统智能推荐宝贝和12个自定义宝贝选择。在原计划中可以最多添加20个宝贝推广。...

软文推广是什么?软文推广的好处是什么?

软文推广是什么?软文推广的好处是什么?

软文是什么?软文推广的好处是什么?软文说白了,就是一种貌似新闻而里面暗藏着宣传某一企业或商品的文章,而后来软文的发展把软文的概念也放大了,写一些推广的论坛帖子可以叫做论坛软文,也可以写成有趣的故事或使用心得等等,只要是有意宣传某企业或是产品的各类文稿及视频、音频资料都可以叫...

网站权重优化 权重排名的方法

网站权重优化 权重排名的方法

是网站搜索引擎的一种权威值,那么大家知道网站权重优化的方法是什么吗?权重排名有哪些呢?下面是小编搜集的内容,感兴趣的朋友可以一起来看看。 网站权重 网站权重是指搜索引擎给网站(包括网页)赋予一定的权威值,对网站(含网页)权威的评估评价。一个网站权重越高,在搜索引擎所占的份量越大,在搜索引擎排名就...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片