首页 > 其他分享 >清除缓存解决viewBinding不生效没提示,+ 新手,android stdio,kotlin,viewBinding笔记,2024

清除缓存解决viewBinding不生效没提示,+ 新手,android stdio,kotlin,viewBinding笔记,2024

时间:2024-02-23 18:46:53浏览次数:37  
标签:缓存 viewBinding stdio binding button1 kotlin binding2 onCreate

我的问题是缓存导致的,
文件->清除缓存->清楚并重启


头一次用,我也不知道为什么是缓存问题。

官方文档链接:https://developer.android.com/topic/libraries/view-binding?hl=zh-cn
官方博客链接:https://medium.com/androiddevelopers/use-view-binding-to-replace-findviewbyid-c83942471fc
但是有网络要求

配置binding,类似插件?

首先,在build.gradle.kts中声明"插件"

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

使用

忽略

某个布局文件不想用它,把tools:viewBindingIgnore="true" 属性添加到该布局文件的根视图中:

<LinearLayout  
        tools:viewBindingIgnore="true" >       
</LinearLayout>

全局和非全局

非全局

然后用,在activity文件中,使用

class FirstActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState);

//        val button1: Button = findViewById(R.id.button1)
        val binding1 = FirstLayoutBinding.inflate(layoutInflater)
        binding1.button1.setOnClickListener {
            Toast.makeText(this, "You click Button 1", Toast.LENGTH_LONG).show()
        }
//        setContentView(R.layout.first_layout)
        setContentView(binding.root)
    }
}

首先命名规则,如layout文件为first_layout,采用驼峰命名法,FirstLayout+Binding
在onCreate()中输入FirstLayoutBinding,as自动提示导入包
import com.example.activitytest.databinding.FirstLayoutBinding
这里没提示那就八成出错了,我是清理缓存

然后这个,不懂就这这来:FirstLayoutBinding.inflate(layoutInflater)
最后,也不用改就这么来:setContentView(binding.root)

全局

看着有点?反复初始化?kotlin语言决定
那就回退findViewById()也还能用

class FirstActivity : AppCompatActivity() {
    private lateinit var binding2: SecondLayoutBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState);
        binding2 = SecondLayoutBinding.inflate(layoutInflater)
        binding2.button2.setOnClickListener {}
        setContentView(binding2.root)
    }
    fun func2(){
       binding2 = SecondLayoutBinding.inflate(layoutInflater)
    }
    fun func3(){
        val button1:Button=findViewById(R.id.button1);
    }
}

1
1
1
1
1
1
1
1

标签:缓存,viewBinding,stdio,binding,button1,kotlin,binding2,onCreate
From: https://www.cnblogs.com/LiiYuan/p/18030193

相关文章

  • Kotlin的主构造函数
    主构造函数没有函数体,如果想在主构造函数中写一些逻辑,Kotlin提供了一个init结构体,所有主构造函数中的逻辑都可以写在里面:classStudent(valsno:String,valgrade:Int):Person(){init{println("snois$sno")println("gradeis$grade")}}......
  • Kotlin学习, 新手向,变量总汇,基于《第一行代码Android(第三版)》
    作者做的思维导图变量val和var区别valvalue不可变变量varvariable可变变量变量的自动类型推导(弱)vala=10;print("a="+a);变量的显式声明(强)vala:Int=10;数据类型注意和java不同,这些都是对象数据类型,大写开头:IntShortLongFloatDoubleB......
  • kotlin--Object关键字
    1.匿名内部类Object可以实现,继承一个抽象类的同时,实现多个接口。interfaceA{funfunA()}interfaceB{funfunB()}abstractclassMan{abstractfunfindMan()}funmain(){//这个匿名内部类,在继承了Man类的同时,还实现了A、B两个接口......
  • 【Kotlin基础】Kotlin的标准函数
    所谓标准函数,就是指Standard.kt文件中定义的函数,任何Kotlin代码都可以自由调用所有标准函数,本文主要讨论下几个常用的标准函数:首先看看直观的对比:传入this传入itreturnlambda的最后一行runletreturnthisapplyalsorun()run()函数是具备接收者的隐式调用(apply()),返回的是lambda的......
  • Visual Stdio 调试出现0xC00000FD:Stack overflow原因及解决方法
    原因:由于系统分配给一个进程的栈空间是一定的,当一个.cpp文件中的栈空间大于系统为该进程所分配的栈空间时,就会报栈溢出错误。解决方法:方法一:动态分配内存不要静态分配内存,用new或malloc来动态创建,从堆中分配内存,因为堆的空间足够大。但是要记得使用free或delete手动释......
  • Visual Stdio 修改默认堆栈大小
    修改visualstudio的默认堆栈大小C/C++编译的程序占用的内存分为几个部分:1、栈区(stacksegment):由编译器自动分配释放,存放函数的参数的值,局部变量的值等。在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定......
  • AndroidStudio-创建Kotlin匿名内部类时自动补全
    AndroidStudio-创建Kotlin匿名内部类时自动补全用Kotlin写代码,当要创建匿名类实例时,总是要自己手敲出来,不像Java一样,输入new就会有代码提示出来,去网上搜索,大部分都是AndroidStudio按住ctrl+空格键,或者ctrl+alt+空格会出现代码提示,我试了,嗯...好像啥反应也没有,然后发现每次按,输入......
  • IDEA编译报错:Error:Kotlin: Module was compiled with an incompatible version of Ko
    问题Error:Kotlin:ModulewascompiledwithanincompatibleversionofKotlin.Thebinaryversionofitsmetadatais1.6.0,expectedversionis1.1.13.Warning:Kotlin:RuntimeJARfilesintheclasspathshouldhavethesameversion.Thesefileswerefoundi......
  • Kotlin扩展函数原理解析
    一、扩展函数扩展函数可以方便地给现有类增加属性和方法而不改动类地代码。二、原理funString.addTo(s:String):String{returnthis+s}反编译:@Metadata(mv={1,6,0},k=2,d1={"\u0000\n\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\u001a\u......
  • Android 中kotlin的功能点
    一、设置状态栏为透明1、屏蔽.fitsSystemWindows(true)<?xmlversion="1.0"encoding="utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="htt......