推广

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

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

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优化的正确解释。

为什么静态网站比动态网站更难优化?伪静态是在搜索引擎和用户面前更好地显示网站,所以如果你的网站仍然是通过动态参数访问的,事实上,对于当今的搜索引擎来说,动态页面与静态页面几乎没有区别,也许静态已经成为一种习惯,伪静态也是一种习惯的演变。   一、伪静态站点的好处 &n...

网站软文写作技巧。

网站软文写作技巧。

1、标题醒目 一个好的标题如同一个美女的脸,首先一眼看上去就能让人印象深刻,移不开眼。标题可以固定模式的,可以是惊喜类型的,但是无论采取哪种方式,一定要具备一个特征——有吸引力。别看标题不长,其中可是有很多的学问。 2、读者至上 首先一点软文的价值是与其他的人分享,这样就能达到广...

“KFC疯狂星期四”模因营销案例分析

“KFC疯狂星期四”模因营销案例分析

#今天你疯狂星期四了吗?“感觉你们好有趣啊,不像我,不仅连句话都搭不上,还要被当成破坏氛围的傻狗,我现实中自闭没朋友,哪怕是在网上也受尽冷眼,融入不了群体的我,躲在屏幕后面默默哭出来了,所以今天是肯德基疯狂星期四有好心人请我吃吗?”麦克卢汉曾说:“语言占据了媒介传播体系的...

网站长尾词优化有哪些技巧。

网站长尾词优化有哪些技巧。

网站优化对于企业网站来说有多么重要想必大家都知道,尤其是关键词优化更是重中之重,因为在网站运营期间网站目标流量的主要来源都是长尾关键词,因此,对于长尾关键词的优化更是不容小觑,凭借着它对网站优化的重要作用,那么站长在平时是怎样进行网站长尾关键词的优化工作的呢? 1、挖掘长尾关键词 相信...

利用seo规则提升网站排名的方法是什么。

利用seo规则提升网站排名的方法是什么。

  二、网络宣传具有可重复性和可检索性 网络宣传可以将文字、声音、画面完美地结合之后供用户主动检索,重复观看。而与之相比电视宣传却是让用户被动地接受宣传网站内容。如果错过宣传时间,就不能再得到发布信息。另外,显而易见,较之网络宣传的检索平面宣传的检索要费时、费事得多。   三、网络宣传具...

小红书企业号常见的3大问题

小红书企业号常见的3大问题

  本期我们将选择其中的几个问题,帮主大家分析 问题1 企业号转载博主的笔记,图文都修改过, 想进行笔记关键词投放,却被判为风险, 不能进行投放,这个怎么解决? 首先想要解决这样的问题要找出待转载笔记被判为风险的原因 判为风险的原因大致可以分为以下两点: (1)功...

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

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