Unresolved reference: button2

书籍

《第一行代码 Android》第三版

开发环境

Android Studio Jellyfish | 2023.3.1

问题

在学习《第一行代码 Android》第三版的3.3.5 返回数据给上一个Activity章节时, 在SecondActivity中给按钮注册点击事件时出现问题"Unresolved reference: button2",如下图所示:

分析

这个问题很明显就是在SecondActivity.kt中无法正确引用second_layout.xml中定义的控件button2.原因是在此处作者引用控件的方式是直接xml控件ID直接引用的方式,要实现这种方式需要引入插件"kotlin-android-extensions",而目前这个插件已经被淘汰了,使用ViewBinging替代.

解决方法

使用ViewBinging来引用控件,细节可以参考本人前面写的文章ViewBinding的使用(因为kotlin-android-extensions插件的淘汰)_kotlin viewbinding 过时-CSDN博客

package com.example.activitytestimport android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.activitytest.databinding.SecondLayoutBinding
class SecondActivity : AppCompatActivity() {private lateinit var secondBinding: SecondLayoutBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)
//        enableEdgeToEdge()setContentView(R.layout.second_layout)ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)insets}secondBinding = SecondLayoutBinding.inflate(layoutInflater)setContentView(secondBinding.root)secondBinding.button2.setOnClickListener{Log.d("button2", "setOnClickListener")val intent = Intent()intent.putExtra("data_return", "setOnClickListener")setResult(RESULT_OK, intent)Log.d("SecondActivity", "SecondActivity return back to FirstActivity")finish()}}override fun onBackPressed() {val intent = Intent()intent.putExtra("data_return", "onBackPressed")setResult(RESULT_OK, intent)finish()}
}

题外话

原本刚出现该问题的时候就是采用了ViewBingding的方式去解决该问题,但是因为粗心少写了一句代码setContentView(secondBinding.root)导致在点击button2的时候完全没有反应,幸好后面又重新试了一次.再次感叹,写代码,就是要细心才行啊.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3246192.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

[集成学习]基于python的Stacking分类模型的客户购买意愿分类预测

1 导入必要的库 import pandas as pd import numpy as np import missingno as msno import matplotlib.pyplot as plt from matplotlib import rcParams import seaborn as sns from sklearn.metrics import roc_curve, auc from sklearn.linear_model import LogisticRegres…

【SpringBoot配置文件application.yaml】笔记

详细内容见官方文档Common Application Properties 使用application.yaml进行简单配置 第一步:创建WebDemo第二步:创建application.yaml配置文件注意: 第三步:验证自己创建的yaml文件是否生效测试:思考:如…

【STM32嵌入式系统设计与开发---拓展】——1_9_1上拉输入和下拉输入

在使用GPIO引脚时,上拉输入和下拉输入的选择取决于外部电路的特性和应用需求。以下是它们各自的应用场景: 1、上拉输入(Pull-up Input) 用途: 当默认状态需要为高电平时。 避免引脚悬空(floating)导致的…

逆向学习思路链接分享

学好逆向先学C 然后我们需要学习好 编码问题CTF常见编码及加解密(超全) - ruoli-s - 博客园 (cnblogs.com) 并且规划好学习路线 CTF逆向Reverse入门学习路线(面向小白)_逆向reverse 思路-CSDN博客 并且安好反编译的环境 x64d…

微信保存的图片很模糊,用这个软件,秒变高清图!

我们有时从微信下载下来的图片就是很模糊,重新加载也一样,不知道什么原因。那么有什么好的解决图片模糊的办法吗? 微信保存的图片很模糊,用这个软件,秒变高清图! 或者是写一个东西,需要配图&am…

在项目服务器部署git 并实现自动提交

以下场景适合在服务器当中使用git 方便提交代码,同时不需要外部的git仓库(码云gitee或者github作为管理平台)。依靠服务器本身ssh 连接协议做为git提交的地址,同时利用钩子自动同步项目代码 首先下载git sudo apt update sudo a…

什么是 EDI 电子数据交换? EDI 有哪些优势?EDI 解决方案 以及行业应用

什么是EDI电子数据交换? EDl电子数据交换(Electronic Data |nterchange)是指按照同一规定的一套通用标准格式,将标准的数据信息通过通信网络传输,在贸易伙伴的电子计算机系统之间进行数据交换和自动处理。简单来说,EDI是将贸易、…

2024Datawhale AI夏令营---Inclusion・The Global Multimedia Deepfake Detection--学习笔记

赛题背景: 其实总结起来就是一句话,这个项目是基于目前的深度伪装技术,就是通过大量人脸的原数据集进行模型训练之后,能够生成伪造的人脸视频。这项目就是教我们如何去实现这个DeepFake技术。 Task1:了解Deepfake和跑通baseline …

C语言 | Leetcode C语言题解之第237题删除链表中的节点

题目: 题解: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/void deleteNode(struct ListNode* node) {struct ListNode * p node->next;int temp;temp node->val;node->val…

C++从入门到起飞之——inline/nullptr关键字全方位剖析!

个人主页:秋风起,再归来~ C从入门到起飞 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 目录 1、inline 2、nullptr 3.完结散花 1、inline • ⽤inline修饰的函数叫…

苹果手机的微信过期文件怎么恢复?3个小窍门,让你快速找回

在微信APP里,发送过的文件只能储存7天,7天之后就会自动清除,导致无法打开。那么,微信过期文件怎么恢复呢?别担心,今天我们就来分享3个实用的小窍门,帮助你轻松恢复苹果手机上过期的微信文件。赶…

React Native 自定义 Hook 获取组件位置和大小

在 React Native 中自定义 Hook useLayout 获取 View、Pressable 等组件的位置和大小的信息 import {useState, useCallback} from react import {LayoutChangeEvent, LayoutRectangle} from react-nativeexport function useLayout() {const [layout, setLayout] useState&l…

springcolud学习03Eureka

Eureka 模块 来实现服务治理 服务治理就是提供了微服务架构中各微服务实例的快速上线或下线且保持各服务能正常通信的能力的方案总称 建立eureka模型 导入依赖 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XM…

Linux 上 TTY 的起源

注&#xff1a;机翻&#xff0c;未校对。 What is a TTY on Linux? (and How to Use the tty Command) What does the tty command do? It prints the name of the terminal you’re using. TTY stands for “teletypewriter.” What’s the story behind the name of the co…

浅谈Visual Studio 2022

Visual Studio 2022&#xff08;VS2022&#xff09;提供了众多强大的功能和改进&#xff0c;旨在提高开发者的效率和体验。以下是一些关键功能的概述&#xff1a;12 64位支持&#xff1a;VS2022的64位版本不再受内存限制困扰&#xff0c;主devenv.exe进程不再局限于4GB&#xf…

SQL常用数据过滤---IN操作符

在SQL中&#xff0c;IN操作符常用于过滤数据&#xff0c;允许在WHERE子句中指定多个可能的值。如果列中的值匹配IN操作符后面括号中的任何一个值&#xff0c;那么该行就会被选中。 以下是使用IN操作符的基本语法&#xff1a; SELECT column1, column2, ... FROM table_name WH…

用Vue3和WebCola实现3D图的在线展示

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于Cola.js的网络图绘制 应用场景 Cola.js是一个JavaScript库&#xff0c;用于绘制交互式网络图。它广泛应用于社交网络、知识图谱、生物网络等领域&#xff0c;帮助用户可视化和探索复杂的数据关系。 基本…

c语言唯一一个三目运算符

条件表达式由两个符号&#xff08;&#xff1f;和&#xff1a;&#xff09;组成&#xff0c;必须一起使用。要求有三个操作对象&#xff0c;称为三目运算符。 一般形式为 表达式1&#xff1f;表达式2&#xff1a;表达式3 理解如下&#xff1a; a>b?(maxa):(maxb); //相当…

用AI生成Springboot单元测试代码太香了

你好&#xff0c;我是柳岸花开。 在当今软件开发过程中&#xff0c;单元测试已经成为保证代码质量的重要环节。然而&#xff0c;编写单元测试代码却常常让开发者头疼。幸运的是&#xff0c;随着AI技术的发展&#xff0c;我们可以利用AI工具来自动生成单元测试代码&#xff0c;极…

JS+CSS特效:HTML+JS+CSS 实现精致的带二级菜单的头部菜单

本篇&#xff0c;我们来演示一个二级菜单是怎么做出来的。 案例效果图 因为本次内容主要目标是实现顶部的导航菜单&#xff0c;所以我们不关心其他内容。 第一步&#xff1a;清除浏览器默认样式 & 添加基本样式 *{ margin: 0px; padding: 0px; box-sizing: border-box; …