推广

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

iseeyu3年前 (2024-02-22)推广133

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://www.0291.com.cn/post/56489.html

相关文章

通过seo优化把关键词排名首页,起到引流和推广的作用。

通过seo优化把关键词排名首页,起到引流和推广的作用。

首先,你说这些都属于SEO(简称SEO),分为两部分;SEO(百度、360、搜狗、谷歌这些浏览器);优化(通过网站或页面为载体,在页面标题上设置相关关键词,满足用户在百度、360、搜狗的搜索,Google上面这些,这样就可以把我们的页面或网站排名显示出来,在一定程度上起到引流和推广的作用。...

教育行业朋友圈推广技巧!

教育行业朋友圈推广技巧!

2020年的春节,新冠疫情的爆发使众多行业的经营受限,教育行业也受到严重冲击。一方面,线下课程全部暂停,主打线下教育的品牌一时间陷入窘境;另一方面,全国各地区教育局轮番出台延期开学政策,在“停课不停学”的号召下,线上课程逐渐变成“刚需”。 本篇给大家分享一个疫情期间教育行业朋友圈投放...

用什么免费软件取代生意参谋(有和生意参谋一样的免费的软件吗)

用什么免费软件取代生意参谋(有和生意参谋一样的免费的软件吗)

解压后,在解压后的文件夹中找到,名称为:“秋刀鱼工具箱”,打开文件夹,找到文件名为:“秋刀鱼(请将此文件拖入浏览器).crx”。...

我来分享全网推广的准备工作有哪些。

我来分享全网推广的准备工作有哪些。

全网推广在互联网+的时代已经是老生常谈了,但是要想做好全网推广绝非易事。在推广之前,要有思路才行,全网推广的都?怎么开展呢? 一、明确网站针对的所有用户群体 这个全网推广的前提条件,任何一个网站在上线前或产品上线前都应该要明确好,企业所针对你的客户群体。目前大部分的网站都具有明确的行业性,有非常...

我来分享企业网站建设的时间周期大概是多久。

我来分享企业网站建设的时间周期大概是多久。

相信所有的客户都非常关心到底一个需要进行多久的时间,大部分企业建站公司告诉客户的答案都是说没有办法给出一个具体的时间,因为网站建设其实是属于量身订做方面的工作,在建站的过程中需要建站公司和客户双方不停的进行沟通,这中间的时间根据就没有办法进行具体的计算。下面小编就来跟大家说说企业网站建设的时间周期...

什么是引流的核心本质网赚新手必看的引流方法。

什么是引流的核心本质网赚新手必看的引流方法。

大家都知道流量对于网赚项目来说,是尤为重要的,但说真的,目前市面上公布出来的引流方法基本都是别人玩剩的,或者引流效果没有文章所吹的那么牛。那么我们就应该思考思考,到底是方法不行呢?还是个人的执行力有问题? 因此,你想要引到流量,就应该知道流量的核心本质是什么? 一、什么是引...

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

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