首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin在fragment中找不到按钮Id,为什么?

Kotlin在fragment中找不到按钮Id的原因可能有以下几点:

  1. 布局文件问题:首先需要确认在fragment对应的布局文件中是否正确定义了该按钮,并且按钮的id是否与代码中的引用一致。可以检查布局文件中的id命名是否正确,以及是否使用了正确的命名空间。
  2. 引用问题:在fragment中找不到按钮Id可能是因为在代码中没有正确引用该按钮。需要确认在fragment的代码中是否正确使用了findViewById或者使用了Kotlin的视图绑定功能来获取按钮的引用。
  3. 生命周期问题:如果在fragment的生命周期方法(如onCreateView)之外尝试获取按钮的引用,可能会找不到按钮Id。需要确保在适当的生命周期方法中获取按钮的引用,例如在onViewCreated方法中。
  4. 布局加载问题:如果在fragment的生命周期方法之前尝试获取按钮的引用,可能会找不到按钮Id。需要确保在布局加载完成之后再获取按钮的引用,可以在onViewCreated方法中进行。
  5. 命名空间问题:在Kotlin中,使用布局文件中的控件Id时,需要使用Kotlin Android Extensions或者View Binding来自动生成对应的控件引用。如果没有正确配置这些功能,可能会导致找不到按钮Id。

总结起来,Kotlin在fragment中找不到按钮Id可能是由于布局文件问题、引用问题、生命周期问题、布局加载问题或者命名空间问题导致的。需要仔细检查代码和布局文件,确保正确引用和获取按钮的Id。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kotlin甩掉findViewbyId,原理几何

Kotlin,一个非常好用的特性是:可以直接使用控件 ID 对控件进行操作,而不需要像 Java 那样先声明控件,使用 findViewById() 来找到控件,然后才能操作该控件。...那么为什么可以直接使用控件 ID 来操作控件呢?我们先将 Kotlin 转为 Java 代码。... Android Studio ,点击最顶部的 Tools -> Kotlin ,然后选择 Show Kotlin Bytecode,可以右侧面板中看到对应的字节码,然后点击 Decompile...以上是 activity 里面直接使用控件 ID,但是 fragment 里面使用要注意的是,不能在onCreateView方法里用 view 的 ID,而是 onViewCreated以后使用,...可以看到, fragment 里面跟前面的基本原理类似,同样也是findCachedViewById()创建缓存 Map,区别在于 fragment 里面是通过getView()来 findViewById

1.2K10

【Jetpack】Navigation 导航组件 ⑤ ( NavigationUI 类使用 )

Fragment , 分别作为要 互相跳转 的 两个界面 ; 右键点击包名 , 选择 " New / Fragment / Fragment (Blank) " 选项 , 弹出的界面 , 输入.../fragment_b" /> 设置默认的 Fragment , 根标签 navigation , app:startDestination="@id/fragmentA..., 该菜单配置文件 , 配置 android:id="@+id/fragmentB" , 其含义是跳转到 NavigationGraph id 为 fragmentB 对应的 Fragment...> 5、Activity 界面开发 NavigationUI 的主要逻辑 ( 重点 ) a、添加 Fragment 布局 Activity 的布局文件 , 添加如下代码 , 不建议 Design...源码和布局文件 该界面 , 设置了 隐藏 AppBar 的 菜单按钮 的功能 , 跳转到 FragmentB 之后 , 右上角 就不再显示菜单按钮 ; FragmentB 代码 : package

63040

知识点 | ViewModel 四种集成方式

Activity 和 Fragment 通常会在下面三种情况下被销毁: 从当前界面永久离开: 用户导航至其他界面或直接关闭 Activity (通过点击返回按钮或执行的操作调用了 finish() 方法...那段是 Java 代码,而接下来的是 Kotlin 代码: 第一步: 添加依赖 SaveStateHandle 目前一个独立的模块,您需要在依赖添加: def lifecycle_version... Activity 或 Fragment 的 onCreate 方法,将 ViewModelProvider 的调用修改为: //下面的 Kotlin 扩展需要依赖以下或更新新版本的 ktx 库:...您可以用 Activity 创建一个 ViewModel 实例,然后从这个 Activity 的任一个 Fragment 获得 ViewModel 的引用: // Fragment的 onCreate...或 onActivityCreated 方法执行 // 这个Kotlin扩展需要依赖最KTX库:androidx.fragment:fragment-ktx:1.1.0 val sharedViewModel

2.5K20

ViewBinding 与 Kotlin 委托双剑合璧

---- 前置知识: Kotlin | 委托机制 & 原理 & 应用[3] Kotlin | 扩展函数(终于知道为什么 with 用 this,let 用 it)[4] Java | 关于泛型能问的都在这里了...和 ButterKnife 需要在代码声明很多变量,其他几种方案代码简洁度较好; 2、编译检查: 编译期间主要有两个方面的检查:类型检查 + 只能访问当前布局id。...第一个类型参数 F 是属性所有者,第二个参数 V 是属性类型,因为我们 Fragment 定义属性,属性类型为 ViewBinding,所谓定义类型参数为 <in F : Fragment, out...老版本 Java ,传递代码块需要使用匿名内部类实现,而使用 lambda 表达式甚至连函数声明都不需要,可以直接传递代码块作为函数值; 问题 6、Fragment::requireView 是什么...3.3 ViewBinding + Kotlin 委托最终版 V2.0 版本已经完成了针对 Fragment 的属性代理,但是实际场景只会在 Fragment 中使用 ViewBinding 吗?

1.6K20

知识点 | ViewModel 四种集成方式

Activity 和 Fragment 通常会在下面三种情况下被销毁: 从当前界面永久离开: 用户导航至其他界面或直接关闭 Activity (通过点击返回按钮或执行的操作调用了 finish() 方法...那段是 Java 代码,而接下来的是 Kotlin 代码: 第一步: 添加依赖 SaveStateHandle 目前一个独立的模块,您需要在依赖添加: def lifecycle_version... Activity 或 Fragment 的 onCreate 方法,将 ViewModelProvider 的调用修改为: //下面的 Kotlin 扩展需要依赖以下或更新新版本的 ktx 库:...您可以用 Activity 创建一个 ViewModel 实例,然后从这个 Activity 的任一个 Fragment 获得 ViewModel 的引用: // Fragment的 onCreate...或 onActivityCreated 方法执行 // 这个Kotlin扩展需要依赖最KTX库:androidx.fragment:fragment-ktx:1.1.0 val sharedViewModel

22720

Jetpack组件之Navigation

这是一个 Java/Kotlin 对象,用于代码完成 Navigation Graph 具体的页面切换工作。...apply plugin: "androidx.navigation.safeargs.kotlin" Navigation Graph的添加如下标签内代码。...通常会伴随着AppBar的变化,AppBar按钮也可能承担页面切换的工作,既然Navigation和AppBar都需要处理页面切换事件,为了方便管理,Jetpack引入了NavigationUI组件...Navigation Graph文件可以通过android:label来设置AppBar的标题。...如果该标记未设置,您仍会位于触发隐式深层链接时所在的上一个应用的任务堆栈。在这种情况下,如果按下返回按钮,您会返回到上一个应用;如果按下向上按钮,就会在导航图中的父级目的地上启动应用的任务。

2.9K20

Fragment 当中使用 Kotlin-Android-Extensions 需要注意的

如果你不知道我在说什么,我简单提一句,我们 xml 布局当中定义了一个 id 为 logoutView 的按钮: <Button android:id="@+id/logoutView"...关于这个问题,我将近一年前的一篇文章当中提到过,就是一些编译期的黑魔法啦,不信我们来看下刚才那段 Kotlin 代码对应的字节码: L5 LINENUMBER 43 L5 ALOAD...,第一次会最终调用到 findViewById,后面再使用它的话就直接从缓存获取了。... Fragment 中使用 Kae 有什么毛病? 好啦,介绍到此,我们来说说问题。...注意这一行,我们访问 userNameView ,本质上相当于调用前面提到的编译期为 Fragment 生成的一个方法,这个方法会先从缓存查找,接着再去 Fragment 的 View 查找,那么问题来了

1.6K10

【Jetpack】Navigation 导航组件 ④ ( Fragment 跳转中使用 safe args 安全传递参数 )

, args) 最后 , 跳转后的界面 , 调用 getArguments 函数 , 并获取 NAME 和 AGE 对应的参数值 ; // 定义 Kotlin 常量 private const val...会出现错误 ; 下面的代码 , 调用 getInt(“Name”) 也不会报错 ; 上面的 使用 Bundle Fragment 之间传递 参数 , 没有类型检查 , 即使写错了数据类型 也不会报错...' version '2.3.0-alpha06' apply false } settings.gradle , 使用传统的方式配置 Gralde 编译过程中使用到的插件 ; 下面的章节... , 使用 androidx.navigation.safeargs 依赖 ; plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android...' id 'androidx.navigation.safeargs' } 3、 navigation_graph.xml 定义要传递的 argument 参数信息 如果要从 FragmentB

38720

Google 推荐 MVVM 架构中使用 Kotlin Flow

Google 推荐 MVVM 使用 Kotlin Flow Google 推荐 MVVM 中使用 Kotlin Flow我相信如今几乎所有的 Android 开发者至少都听过 MVVM 架构,...Kotlin Flow ViewModel 的使用 ViewModel 中使用 Flow 之前 Jetpack 成员 Paging3 实践以及源码分析(一) 文章也有提到, 这里我们深入分析一下...<androidx.appcompat.widget.AppCompatTextView android:id="@+id/weight" android:text="@...如何处理 ViewModel 的三种方式 如果不使用数据绑定, Activity 或者 Fragment 如何处理 ViewModel 的三种方式。..., Activity 或者 Fragment 调用这个不可变的 LiveData 即可,如下所示: // 方法二 mViewModel.fectchPokemonInfo2(mPokemonModel.name

4.1K20

XPage页面框架使用详解

支持自定义Fragment页面容器。 支持自定义Activity页面容器。 支持Fragment之间、activity和fragment之间的数据交互。 兼容kotlin和androidx。...就在XPage正式投入使用的过程,我发现还是存在不少问题的: 1.对外API不够灵活,使用起来不够方便; 2.每个Fragment仍需要手动注册,很麻烦; 对于API不够灵活的问题,我之后的版本陆续通过构造者模式设计以及...:layout_height="400dp"> 2.XPageActivity设置页面容器的布局ID @Override protected int getLayoutId...4.使用getPage方法获取指定的Fragment,就可以获取该fragment页面的数据。...; } 常见问题 1.问:我使用的是自动注册,为什么我刚接入的时候,一直报错找不到AppPageConfig?

1K30

Navigation问题详解——Fragment创建新的实例

之后,也尝试使用Navigation,但是使用的过程当中遇到了问题: 每次进入下一个Fragment不管任务栈里是否存在该Fragment的实例,都会创建一个新的实例而不会复用。...:navigation-fragment-ktx:$nav_version" // use -ktx for Kotlin implementation "android.arch.navigation...:navigation-ui-ktx:$nav_version" // use -ktx for Kotlin 2.这样我们Fragment当中调用的方法为: findNavController...之前有位同学公共号给我留言,问下了Demo之后,为什么设置 popUpTo/popUpToInclusive不起作用,问题就在这里应该是action Id 代码我已经更新,欢迎star和下载。...看似,我们回退的时候,正常了。但是,我们的问题依旧存在,每次点击的时候依然会创建一个新的Fragment,一个新的实例,只是我们创建新的实例的时候,把之前的给清除了而已。

1.8K20

Android使用ViewBinding

前言 原始方式 我们的开发过程,需要获取XML布局文件的ViewId,以便其赋值显示,我们习惯使用findViewById进行操作,可这样会导致很多的模版代码出现。...基于Kotlin的扩展 近几年Android对Kotlin的支持,我们开始使用 Android Kotlin extensions。 文件中导入布局文件直接引用viewId。...ViewBinding 使用了编译时生成的绑定类, xml 布局文件的每个视图都会生成一个对应的绑定类对象,因此在编译时检测到视图名称的错误。...多个模块引用同一个视图时可能会出现命名冲突的问题,需要通过手动指定全限定名解决。...总体而言 ViewBinding 类型安全性和编译时错误检测方面比 Kotlin扩展 更好。 它是官方推荐的方式,并且可以避免一些潜在的运行时异常。

40421

前面的注解处理器教程涉及到的 Tieguanyi 框架现在怎么样了?

我们同样通过监听其生命周期来实现对用户配置好的属性的值进行保存,以保证这些属性 Activity 或者 Fragment 重新创建时能够得以恢复。...或者 Fragment 添加注解,启动或者显示相应的组件时,调用相应的方法来实现共享元素动画,让页面的跳转更加连贯。...的实例因各种原因(例如开发者选项的”不保留活动“开启时)被销毁,从 EditUserActivity 返回时, UserActivity 被重新创建,导致之间的回调(匿名内部类、Lambda 表达式...外部 View 的实例,通常也是回调所在的 Activity 当中的 View,更新实例时,我们通过 View 的 id 来索引,因此如果布局当中有重复的 id,回调可能将无法更新到正确的实例而产生问题...为什么叫这个名字? 因为我比较喜好喝茶,这个框架开发期间主要喝铁观音。相应的,之前有一段时间常喝茉莉花,公司内部做了一套框架被我命名为 "Jasmine"。 ----

58910

学习|Android JepPack组件---导航Navigation

界面布局 Order_Fragment的布局界面,我们加入了一个RecyclerView用于显示未上传的单据列表,然后下面加入一个按钮,就是新建单据的按钮,这样通过这个按钮跳转到扫描界面,整个布局界面我都是用的可视化编辑...微卡智享 代码主要是OrderFragment的新增单据按钮点击后调用Navigation,再就是主程序为了加入返回的标题样式,加入了NavigationUI,代码相对来说也很简单。...MainActivity 里面定义一个NavController,然后创建的时候加载fragment,这个id我们上面添加NavHostFragment时设置的id名称,然后再重写一下onSupportNavigationUp...OrderFragment OrderFragment的新增单据按钮点击事件里我们直接也是定义NavController,进入跳转。...) } 上面it的参数因为是用kotlin写的,it就是lambda表达式中代替view,这里的参数实际上就是view,后面再通过navigate进行跳转,参数的R.id.action_orderFragment_to_scanFragment

87520

7. JetpackNote---基于Jetpack的学习笔记APP

Jetpack源码解析—Navigation为什么切换Fragment会重绘? 3. Jetpack源码解析—用Lifecycles管理生命周期 4....Jetpack源码解析—Navigation为什么切换Fragment会重绘? ? 4.2 Lifecycles 3....4.3 LiveData LiveData模块,通过生命周期观察LiveData的值,并将它打印控制台中,点击 开始观察数据 按钮,通过演示生命周期函数,返回桌面或者进入后台,查看LiveData对象的值...在此Demo通过点击Map按钮增加UserId,驱动LiveDataViewModel的userBean来改变,最后展示TextView 4....通过点击 查看Fragment共享Demo 可以查看两个Fragment共享了同一个ViewModel的SeekBar的值。 5. Jetpack源码解析—ViewModel基本使用及源码解析 ?

96630

安卓Navigation系列——入门篇

前言 日常开发,越来越多的会使用到一个activity嵌套多个fragment的场景,典型的例子就是app的首页,一般都会由一个activity+多个子tab组成,那对于Fragment的显示、隐藏等我们通常都是通过...实现了返回键的功能,这样fragment的跳转过程,当我们按返回键时,就可以使得fragment跟activity一样可以回到上一个页面了 现在我们运行程序,就可以正常跑起来了,并且看到了FragmentA...{ id 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions' } 可以看到...引用 'androidx.navigation.safeargs.kotlin' apply plugin: 'com.android.application' apply plugin: 'kotlin-android...以后: plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions

2K51
领券