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

在活动以外的类中替代findViewById() (Android Studios)

在活动以外的类中替代findViewById() (Android Studios)

在Android开发中,findViewById()方法用于在活动类中查找并获取布局文件中定义的视图控件。然而,在活动以外的类中,例如工具类或自定义视图类中,无法直接使用findViewById()方法来获取视图控件。

为了在活动以外的类中替代findViewById()方法,可以采用以下两种常见的方式:

  1. 传递视图对象: 在活动类中,可以通过将视图对象作为参数传递给其他类的方法来实现在其他类中获取视图控件。例如,可以在活动类中定义一个公共方法,接受视图对象作为参数,并在其他类中调用该方法来获取视图控件。这样可以避免在其他类中直接使用findViewById()方法。
  2. 示例代码如下:
  3. 示例代码如下:
  4. 通过将视图对象传递给其他类的方法,可以在其他类中获取到需要操作的视图控件,从而避免直接使用findViewById()方法。
  5. 使用接口回调: 另一种替代findViewById()方法的方式是使用接口回调。通过定义一个接口,在活动类中实现该接口并传递给其他类,在其他类中调用接口方法来获取视图控件。这样可以将视图控件的获取操作委托给活动类,从而实现在其他类中获取视图控件。
  6. 示例代码如下:
  7. 示例代码如下:
  8. 通过使用接口回调,可以在其他类中调用接口方法来获取视图控件,而具体的获取操作则由活动类实现。

这些方法可以在活动以外的类中替代findViewById()方法,使得在Android开发中更灵活地操作视图控件。

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

相关·内容

要再见了吗,Kotlin Android Extension

销毁之后的空指针 KAE 是通过在字节码层面添加合成属性来解决 findViewById 的问题的,对于 Activity 和 Fragment 而言,合成的属性背后其实就是一个缓存,这个缓存会在 Activity...出现冲突,一方面可能是类文件太大,包含的 UI 逻辑过多,导致引入过多的 layout,从而产生冲突;另一方面也可能是布局上拆分得太小,一个视图的逻辑类当中不得不引入大量的 layout 导致冲突。...通过合理的设计 UI 相关的类,这个问题本身也可以很好的规避。 另外,如果语言本身支持把包名作为命名空间,在代码访问时直接予以限定,一样可以达到目的。...我看到在废弃 KAE 的讨论中,大家还是觉得废弃有些难以理解,毕竟之前你也没怎么管这个插件啊,这么多年了除了加了个 Parcelize 的功能以外,也没怎么着啊。...小结 KAE 本质上就是通过编译器生成字节码的方式为 Activity、Fragment、View 提供了以 xml 布局中的 id 为名的合成属性,从而简化使用 findViewById 来实现 View

1.8K40

使用视图绑定替代 findViewById

从 Android Studio 3.6 开始,视图绑定能够通过生成绑定对象来替代 findViewById,从而可以帮您简化代码、移除 bug,并且从 findViewById 的模版代码中解脱出来...: // Android Studio 4.0 android { buildFeatures { viewBinding = true } } 配置完成后,视图绑定就会为所有布局文件自动生成对应的绑定类...视图绑定生成的代码是怎样的 如前文所说,视图绑定会生成一个包含替代 findViewById 功能的 Java 类。...这意味着您的修改会立即反映在绑定对象中,而无须等待或者重新构建工程。 Android Studio 被优化为可以在您编辑过 XML 布局文件后立即更新绑定对象。...我们之所以开发视图绑定作为数据绑定的补充,是因为许多开发者反映说,希望有一个轻量的解决方案,能在数据绑定之外替代 findViewById——视图绑定提供的正是这一功能。

1.6K30
  • 速读原著-Android应用开发入门教程(控件和基本事件的响应)

    在 Android 中,在处理 UI 中的各种元素的时候,两个程序中的要点为: 得到布局文件(XML)中的控件句柄 设置控件的行为 本小节介绍在 Android 中几种基本的程序控制方法,要获得的效果是通过...6.1.1.事件响应方法 本例构建一个应用程序,其在 AndroidManifest.xml 描述文件中的内容如下所示: ? 本例定义了一个 Android 中基本的活动。...在 Android 的控件使用方面,这两个编程方面要点是: 使用 findViewById()获取布局文件(XML)中控件的句柄; 使用 setOnXXXListener()设置事件处理函数。...在获取句柄时需要转换成相应的控件类型,findViewById()函数的参数是一个整数,返回值是一个android.view.View 类型。...本例通过定义实现活动类中的 2 个子类,来实现 View.OnClickListener 这个接口,这种方式是一种最为直接的方式,即为不同的控件单独实现它的相应类。

    52640

    消息栏通知(Notification)介绍

    好,我们来看下除了0以外Android还有什么设置: 1、PendingIntent.FLAG_UPDATE_CURRENT 如果该PendingIntent已经存在,则用新传入的Intent的Extra...PendingIntent所做的全部事情都只是对同样的Intent进行处理,关键词,在于“同样的” 既然每次你打开的都是同一个Intent,那区分PendingIntent就没有意义了 所以,在Intent...,很快你就会发现 每次点击通知,都正确的弹出你要的Activity,但是之前的打开的Activity依旧存在 方法有二: 1、在Activity的onPause()方法体中增加: finish(); 这样...这里没有对象…… 是的,我们只有了一个对象的类名,但远远不是某个具体的对象,这是反射么?反射能通过一个类名来找到某个特定的类实例么?...事实如下: Android有一个栈机制,每个产生的活动在过了产生期后,都会进入这个栈,新的活动压着旧的活动,每一次寻找类名的时候,都默认提取的是栈顶的活动。

    1.5K30

    【Android】Android对于Activity的运用以及ViewGroup和 用户界面组件在项目中的运用

    Activity 确保无论系统从哪个任务启动活动,都只会创建一个活动实例并将其添加到新任务堆栈的顶部,也就是说,该实例启动的其他活动将自动在另一个任务中运行。...在单任务模式下启动活动时,系统将搜索是否已存在合适的任务。...在Android APP中,所有用户界面元素都由View和ViewGroup对象组成。视图是用户在屏幕上绘制时可以与之交互的对象。...中的图形界面由View、ViewGroup及其子类组成:View:所有视觉控件的父类,提供组件描述和时间处理方法。...ViewGroup:View类的子类,可以有子控件,可以视为容器。Android UI中的控件按照这种分层树结构堆叠。有两种方法可以创建UI布局。

    69020

    Android-浅谈广播机制,实现强制下线功能

    在Android中,每个应用都可以对自己感兴趣的广播进行注册,这样程序就只会收到自己所关注的广播,这些内容可能来自于系统,也有可能来自于别的app。...而不必在每个页面都编写一个弹出对话框的逻辑,因为你不知道用户此时在哪里。 强制下线的功能需要关闭所有活动,然后回到登录界面。...关于这个方法,我们先简单说一下: 我们只需要创建一个专门的集合类对所有的活动进行管理就可以了,下面我们就来实现以下。...finish() 方法用于将 List 中存储的活动全部销毁掉。...然后创建BaseActity类作为所有活动的父类,代码如下 public class BaseActivity extends AppCompatActivity { protected void

    92130

    Android基础总结(8)——服务

    目前我们希望在MyService里提供一个下载的功能,然后在活动中可以决定何时开始下载,以及随时查看下载进。...,现在我们可以在活动中根据具体的场景来调用DownloadBinder 14 * 中的任何public方法,及实现了指挥服务干什么,服务就干什么的功能,这里只做了简单的测试,在onServiceConnected...,现在我们可以在活动中根据具体的场景来调用DownloadBinder 15 * 中的任何public方法,及实现了指挥服务干什么,服务就干什么的功能,这里只做了简单的测试,在onServiceConnected...八、服务的最佳实践----后台执行的定时任务   Android中实现定时任务一般有两种方式, 一种是使用java api里提供的Timer类, 一种是使用android的Alarm机制。   ...当然,如果要求Alarm任务的执行时间必须准确无误,android仍然提供l解决方案。使用AlarmManager的setExact()方法来替代set()方法,就可以保证任务准时执行了。

    1.6K80

    Fragment基本使用

    Fragment概述 1.1 介绍 Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity...在介绍Fragment的具体使用时,先介绍一下Fragment的几个核心类 Fragment:Fragment的基类,任何创建的Fragment都需要继承该类 FragmentManager:管理和维护...类或其子类,同时实现onCreate()方法,在方法中,通过inflater.inflate加载布局文件,接着返回其View 在需要加载Fragment的Activity对应布局文件中的name属性设为全限定类名...android:text="this is Fragment" /> 自定义Fragment类,继承Fragment或其子类,重写onCreateView(),在方法中调用...(String code); } Fragment类中定义该接口 private Mylistener listener; 在onAttach方法中,将定义的该接口强转为activity类型 @Override

    2K30

    AOP编程之AspectJ实战实现数据无痕埋点

    在不知道AOP的情况下,一般的处理都是:先设计一个日志输出模块,这个模块提供日志输出API,比如Android中的Log类。...这意味着,在 AOP 中,我们不需要显式的修改就可以向代码中添加可执行的代码块。...Fragment的中的方法监控 上面我已经演示过Activity中的方法强势插入,在Fragment中依然可行 ?...典型的 Advice 类型有 before、after 和 around,分别表示在目标方法执行之前、执行后和完全替代目标方法执行的代码。 上面的例子中用的就是最简单的Advice——Before。...因此,我们的 DebugTrace.java 文件看上是这样的: 2、性能监控计时类 3、DebugLog 类 我只是包装了一下 “android.util.Log”,因为我首先想到的是向 android

    2.9K20

    Android开发笔记(六十五)多样的菜单

    菜单Menu Android的菜单分为两类:选项菜单和上下文菜单,默认使用选项菜单。...展示选项菜单的途径有三种: 1、按下菜单键; 2、在代码中手动打开选项菜单,即调用函数openOptionsMenu; 3、按下导航栏右侧溢出菜单按钮,溢出菜单参见《Android开发笔记(二十)...2、在代码中手动打开上下文菜单。...; 弹窗PopupWindow 在实际开发中,Android自带的菜单显得朴素不够灵活,一个是位置固定,如选项菜单固定从页面底部弹出,溢出菜单固定从页面右上角弹出,上下文菜单固定显示在页面中央...2、弹窗在弹出和消失时显示伸缩动画; 调用setAnimationStyle方法设置动画样式,该样式在styles.xml中定义,其中"android:windowEnterAnimation"项定义的是展示弹窗时的动画

    1.3K30

    Android开发笔记(七十六)线程池管理

    线程池的种类 在前面的《Android开发笔记(四十八)Thread类实现多线程》,我们介绍了线程类Thread的使用,可是缺乏线程的统一管理,这会产生如下问题: 1、无法控制线程的并发数,一旦同时启动多个线程...Java把线程池分为两大类:普通线程池、定时器线程池,最新的java1.8新加了一类分支/聚合线程池(即ForkJoinPool),但Android尚无ForkJoinPool的定义,所以本文的讨论仅限于前两类...再具体一点,Android中用到的线程池一共五种,它们都在Executors类中创建,分别是: 1、newCachedThreadPool : 创建一个无个数限制的线程池。...setKeepAliveTime : 设置线程活动时长。 getPoolSize : 获取当前的线程个数。 getActiveCount : 获取当前的活动线程个数。...ScheduledExecutorService 前面的博文《Android开发笔记(五十)定时器AlarmManager》,提到了两类定时器,分别是Java自带的Timer/TimerTask,以及

    1.3K30

    《移动互联网技术》第五章 界面开发: 掌握Activity的基本概念,Activity的堆栈管理和生命周期

    在堆栈中,只有栈顶的活动可以操作,也就是说一个任务中只有一个活动处于运行状态,其他的活动都转入到后台暂停运行,Android系统会保存这些活动的状态,以便它们在转入前台时可以恢复运行。...Activity自身类 在Activity类中对事件进行监听,可以把活动上的所有事件都汇总到一起来处理。...如果Intent对象中既包含Uri又包含type,则在中必须二者都包含才能通过测试。 extras(扩展信息) 扩展信息是数据以外的其他信息。...创建了一个自定义的绘图控件:DrawingView类,通过它来绘制图形;并且在活动的布局文件中添加这个自定义的DrawingView控件。DrawingView继承视图类,需要重载onDraw函数。...*NORMAL*); } 双缓冲视图类,除了定义画笔以外,定义了一个Bitmap对象作为缓冲区,另外还定义了拖动事件发生点的位置坐标,路径,画布等对象。

    22510

    Android之控件与布局,结构知识点,基础完结

    标题图 在Android中我们常常用到很多UI控件,如TextView,EditText,ImageView,Button,ImageButton,ToggleButton,CheckBox,RadioButton...android:hint 结构: AndroidManifest.xml为整个应用的主配置,清单文件,应用的包名、版本号、组件、权限等信息。...Activity的活动状态: activity is running:为活动状态 onResume()->running->onPause():为暂停状态 onStart()->onResume()->...自定义类继承ContentProvider,通过android:authorities属性授权。ContentResolver内容处理者,提供ContentProvider中同名同参的增删改查方法。...❤️ 编辑 :达叔 信箱:2397923107@qq.com 定位:分享 Android&Java 知识点 我的目标是——每天不断更 我是简书的达叔小生。

    1.2K40

    抢购倒计时自定义控件的实现与优化

    一、 前言 随着网购的持续发展,抢购类倒计时在各类电商应用中已十分常见,这种设计可以提高用户的点击率和下单率等。...(); } 在该接口中定义三个方法: onRemain(long millisUntilFinished):倒计时进行中回调的方法,用于后续功能的拓展 onFinish():倒计时结束回调,用于活动状态的切换和计时的暂停等...此外,产品中还有一个一分钟定期上报埋点的需求,也可以在onTick()方法中完成。在实际项目事件中,若有定时的任务需求,也可在该方法中自由设置。...2.3 倒计时类的实际调用 实际调用倒计时控件时,只需在具体布局中添加该倒计时类布局,在调用的类中实例化BaseCountDownTimerView。...> 它的实际展示效果如下图所示 在类中将以上两个view分别进行实例关联。 ​

    1.5K30

    Android开发(第一行代码 第二版) 常见异常和解决办法(基于Android Studio)(二)

    2.Android studio项目崩溃报Binary XML file line #2: Error inflating class类错误 可能的原因:找不到资源文件: 系统会根据分辨率来选择加载不同...中的相关活动acitivity添加intent-filter,如下 android:name="android.intent.category.DEFAULT...原因在于,Android系统中的视图组件并不是线程安全的,如果要更新视图,必须在主线程中更新,不可以在子线程中执行更新的操作。...解决办法:在子线程中通知主线程,让主线程做更新操作,并使用Handler对象通知主线程。...5.为APP设置启动欢迎界面,AndroidStudio添加启动界面之后闪退 解决办法: 将启动的第一个页面设置为XXXActivity,同时,将原来的主活动文件添加到其下面: android

    1.8K30

    Android开发学习——事件监听方式

    1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类内部类的两个优势。上面代码就是内部类的形式!...外部类 //activity类中 bt2.setOnClickListener(new Iclick()); //Iclick类中 import android.util.Log; import android.view.View...2、外部类形式的事件监听器不能自由访问创建gui界面的类中的组件,编程不够简洁。...Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱 2.如果activity界面类需要实现监听器接口,让人感觉比较怪异 绑定标签 //在xMl文件中 //在活动活动中添加一个clickhandle函数 private static final string TAG = "begin" public void clickhandle(View

    61740
    领券