【Android自定义注解】BindView

2023-05-16

注意:定义的控件变量必须是public,否则报错

1、添加类

package com.example.zhujie;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface BindView {
    int value();
}

2、添加类

package com.example.zhujie;
import android.app.Activity;
import android.view.View;
import java.lang.reflect.Field;
//创建注解处理器
public class InjectUtils {
    public static void inject(Activity activity) throws IllegalAccessException {
        Field[] fields = activity.getClass().getDeclaredFields();
        for (Field field : fields) {
            BindView bindView = field.getAnnotation(BindView.class);
            if (bindView != null) {
                int value = bindView.value();
                View view = activity.findViewById(value);
                try {
                    field.set(activity, view);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3、在activity中调用

package com.example.zhujie;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {

    @BindView(R.id.tv)
    public TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
            InjectUtils.inject(this);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        textView.setText("测hi注解");
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Android自定义注解】BindView 的相关文章

  • 具有自定义持续时间的 ActivityOptionsCompat.makeSceneTransitionAnimation

    我正在为 API 级别 20 的设备进行场景转换 它工作正常 但我想设置自定义持续时间来进行转换 是否可以 My code ActivityOptionsCompat options ActivityOptionsCompat makeSc
  • 造型 Sherlock ActionMode 背景

    似乎无法设置 ActionMode 背景的样式 我已经覆盖了操作栏背景 但设置 ActionMode 背景似乎不起作用
  • LoaderManager 不接受“这个”

    好吧 我投降 我想不明白 我正在学习 Udacity 的 Android 基础知识课程 需要了解如何使用加载器加载数据 但是 当我使用以下行时 this 以红色突出显示并显示以下错误 Wrong 3rd argument type Foun
  • 地理围栏转换后,我如何在主要活动上执行某些操作?

    当有人进入我的地理围栏之一时 我想让布局在我的地图上可见并开始播放一些音频 我一直在关注一些教程 我知道如何在它们进入时进行推送通知 但这一切都发生在另一个 IntentService 类中 也许这就是 onResult 的用途 我不确定如
  • 播放完整性本地验证

    我正在尝试将播放完整性检查集成到我的应用程序中 以确保我的应用程序没有安装在已取得 root 权限的 Android 设备上 我可以按照谷歌的指导成功获得完整性令牌响应document https developer android com
  • 如何使用意图将哈希图值发送到另一个活动

    如何发送HashMap从一个意图到第二个意图的价值 另外 如何检索HashMap第二个活动的价值 Java 的 HashMap 类扩展了Serializable接口 这使得可以轻松地将其添加到意图中 使用Intent putExtra St
  • Xamarin - 未找到类(Android 支持库)

    我正在尝试使用 AppCompat 实现具有向后兼容性的 Material Design 继tutorial https blog xamarin com android tips hello material design v7 appc
  • 在手机上单步执行 Android 代码 - 大行号差异

    我正在尝试调试与 Samsung Captivate Galaxy S 上的 ListView 相关的一些代码 我在代码中的某个位置放置了断点 当它停止时 我会在堆栈上返回几帧到 ListView 源 现在 我可以预期会出现一些不匹配的情况
  • 删除 ios 和 android 的 PhoneGap 中的闪屏

    我正在尝试在 ios 和 android 的phonegap应用程序中完全删除启动屏幕 这navigator hide 函数仅在加载 html 页面后才起作用 但我需要在此之前删除启动屏幕 请告诉我是否有任何选项可以执行此操作 Cordov
  • Android:转换为位图时,回收器视图的宽度和高度必须> 0

    在 Sqlite 中存储文本和图像 并尝试将这些数据检索到 recyclerview 中 当将图像显示到 recyclerview 中时 它显示错误宽度和高度必须 gt 0 在将图像保存在 sqlite 中时 我将位图转换为字节 数据库助手
  • Firebase API 密钥限制不适用于 Android 应用程序包名称和 SHA1 指纹

    我们正在使用 Google Firebase 获取我们应用程序的 CrashLytics 数据 以及通过google services json文件被提出作为一个安全问题 因为应用程序 apk 文件可以被逆向工程来获取该文件 然后攻击者可以
  • C# Response.Write pdf 不适用于 Android 浏览器

    我目前在 Android 环境中使用 pdf 导出时遇到了巨大的问题 我正在使用报告查看器控件将报告呈现为字节数组 接下来我使用response binarywrite方法将字节流输出到浏览器 这适用于所有浏览器以及 iPhone 和 iP
  • EditText 的椭圆形

    EditText 的椭圆尺寸仅适用于 输入类型 无 可编辑 false 但这使我的 EditText 无法编辑 考虑到本地化 如何处理这个问题 预期行为 EditText 中的文本应以省略号显示 EditText 应该是可编辑的 尝试过这些
  • 无法从新版 Google 相册应用中同时选择照片和视频

    Google 相册更新后 我无法同时选择视频和照片 如果我使用单个 视频 或 图像 意图 它会像平常一样工作 在视频 照片意图中 它忽略第二个参数 如果第一个是视频 它将是视频意图 如果它是照片 您将建议选择照片 Intent intent
  • Android Compose MVVM - 如何在不带参数的 Composable 函数中引用 viewModel 对象?

    将如何 Composable ContentFeed 函数访问viewModel哪个是在活动中创建的 依赖注入 或者这是一种错误的做事方式 这viewModel应该始终只有一个实例 MainActivity kt class MainAct
  • 请求位置更新参数 android

    我对这个参数感到困惑 locationManager requestLocationUpdates provider 60000 10 listener 这是它的执行方式location update listener if time 60
  • 从 Android 中的 ListView 中删除项目时遇到 IndexOutOfBoundException?

    我有一个simple list item multiple choicelistview 在我的布局中 我试图从中删除所有选定的项目 我知道如何删除它 但删除项目时遇到两个主要问题 我的程序不会删除超过 2 个项目 例如如果我选择了 4 个
  • 程序类型已存在:android.support.v4.app.BackStackRecord

    我升级了Android Studio 在最新版本中发现了很多问题 尽管存在很多类似的问题 但我检查了所有答案 但没有一个对我有用 这是我在编译代码时遇到的错误 已存在的程序类型 android support v4 app BackStac
  • 如何在声音输入时触发振动?

    我正在尝试创建一个 Android 应用程序 在其中过滤蜂鸣声的一个特定频率并使手机振动 我正在从移动设备的 MIC 获取输入并使用 MediaRecorder 类 通过使用该类 我可以录制 保存和播放输入 现在我需要我的手机在发出蜂鸣声
  • 构建 AOSP 5.1 时出现 API 更改错误

    目前正在尝试构建 android 5 1 0 r5 我已经检查了来源并且没有做任何修改 但是 编译时出现以下错误 Checking API checkpublicapi current out target common obj PACKA

随机推荐

  • 女生学java软件开发怎么样?就业前景如何?

    学java目前现状是男生多于女生 xff0c 从事java工作的也是男生多于女生 xff0c 那么这种现状是说女生学java不好找工作吗 一 女生适合从事java吗 在很多人的潜意识里 xff0c 认为女生是不适合从事java工作的 xff
  • 【 Docker Desktop stopped...】--------已经解决

    windows10系统 xff0c 安装docker 4 6 1版本 xff0c 提示Docker Desktop stopped xff0c 如图所示 在Stackoverflow有此问题 xff0c 底下给出的解决方案是卸载4 6 1版
  • JVM参数配置详解

    JVM调优总结 默认设置 Xms为JVM启动时申请的最小内存 xff0c 默认为操作系统物理内存的1 64但小于1G Xmx为JVM可申请的最大内存 xff0c 默认为物理内存的1 4但小于1G xff0c 默认当空余堆内存小于40 时 x
  • 认识MyBatis与Mybatis-plus及两者的区别

    一 认识Mybatis MyBatis 是持久层框架 xff0c 它支持定制化 SQL 存储过程以及高级映射 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集 MyBatis 可以使用简单的 XML 或注解来配置
  • 线程

    创建线程 xff1a 方法一 xff09 继承Thread类 实现步骤 xff1a 继承Thread类 覆盖run 方法 提供并发运程的过程 创建这个类的实例 使用start 方法启动线程 xff08 方法二 xff09 实现Runnabl
  • Linux中实现cp命令

    一 main函数的原型 main int argc char argv argc是所有参数的总数量 argv为参数 如该程序所示 xff1a 程序运行结果如图所示 xff1a 二 实现cp指令的思路 1 打开src c 2 通过lseek函
  • Linux系统编程—进程

    一 相关概念 1 进程与程序 xff1a 程序是一个静态的概念 如gcc xxx c o pro xff0c 磁盘中生成的Pro文件 xff0c 叫做程序 进程就是程序运行起来 xff0c 系统中就多了一个进程 2 查看进程的方法 xff1
  • Linux系统编程——进程间通信

    目录 一 无名管道 相关概念 相关函数介 相关说明 实战 二 有名管道 有名管道和无名管道的区别 有名管道和无名管道的相同点 有名管道的相关函数 实战 三 消息队列 消息队列的介绍 消息队列的特点 相关函数 实战 四 共享内存 共享内存优缺
  • 树莓派——初级编程

    一 没有屏幕的树莓派如何使用 通过串口连接树莓派 通过官方给的相关文件和软件 xff0c 对树莓派进行刷系统 设备破解 默认情况 xff0c 树莓派的串口和蓝牙连接 想办法断开蓝牙连接 xff0c 把串口用来数据通信 默认账号 xff1a
  • 树莓派gpio驱动编写——不使用wiringPi

    一 相关概念 总线地址 总线地址 xff1a cpu能够访问内存的范围 可以通过cat proc meminfo 来查看内存条大小 物理地址 物理地址 xff1a 硬件的实际地址或绝对地址 虚拟地址 虚拟地址 xff1a 逻辑 xff08
  • 初识网络七层模型

    OSI 模型 Open System Interconnection model 是一个由国际标准化组织 x10fc01 提出的概念模型 试图 x10fc01 供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架 它将计算机网络体系
  • http的简单实现

    一 http协议的特性 http协议是建立在TCP IP协议之上应用层协议 xff0c 默认端口为80 8080 http协议的的特点是无状态 xff0c 无连接 二 http协议的请求 利用抓包工具httpwatch可以获取报文 http
  • Selenium之css怎么实现元素定位?

    世界上最远的距离大概就是明明看到一个页面元素站在那里 xff0c 但是我却定位不到 xff01 xff01 Selenium定位元素的方法有很多种 xff0c 像是通过id name class name tag name link tex
  • 零基础如何学习计算机语言

    一 认识电脑键盘 1 对于一个还没有接触过计算机的人来说认识键盘是重要的 2 通用的几个常见快捷键 xff1a CTRL 43 C 复制 CTRL 43 V 粘贴 CTRL 43 A 全选 CTRL 43 X 剪切 CTRL 43 S 保存
  • 如何用python连接Linux服务器

    1 安装paramiko库 pip install paramiko 2 使用paramiko库连接linux 导入库 import paramiko 创建一个sshclient对象 ssh 61 paramiko SSHClient 允许
  • 包装类

    注意点 包装类是final的类 包装类对象是不变的 与字符串类似 不变模式 共有8种包装类 int Integer long Long byte Byte short Short float Float double Double bool
  • 数据库和缓存如何保证一致性?

    先更新数据库 xff0c 还是先更新缓存 xff1f 有了这个想法后 xff0c 就准备开始着手优化服务器 xff0c 但是挡在在他前面的是这样的一个问题 由于引入了缓存 xff0c 那么在数据更新时 xff0c 不仅要更新数据库 xff0
  • 一名高级的Javaer,应该了解的 MYSQL 高级知识点

    SQL查询流程 1 通过客户端 服务器通信协议与 MySQL 建立连接2 查询缓存 xff0c 这是 MySQL 的一个可优化查询的地方 xff0c 如果开启了 Query Cache 且在查询缓存过程中查 询到完全相同的 SQL 语句 x
  • Python循环语句

    1 for循环 1 for in range xff08 xff09 简单的for循环代码 xff1a for i in range 5 print i 输出的便是0 4形成一列 xff0c 这里rang xff08 5 xff09 xff
  • 【Android自定义注解】BindView

    注意 xff1a 定义的控件变量必须是public xff0c 否则报错 1 添加类 package com example zhujie import java lang annotation Retention import java