android onclick事件(android 点击事件 为什么不起作用)

2024-07-21 02:59:42 17

android onclick事件(android 点击事件 为什么不起作用)

本文目录

android 点击事件 为什么不起作用

Android中View的点击事件如果没有触发,那肯定是代码写的有问题,onClick事件有四种写法:1.匿名内部类: button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //点击后执行 }});2.自定义单击事件监听类: class MyClickListener implements OnClickListener { @Override public void onClick(View v) { //点击后执行 }}3.Activity直接实现View.OnClickListener的onClick方法 @Override public void onClick(View v) { //点击后执行}4.在XML文件中显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法:android:onClick="onClick"public void onClick(View v) { //点击后执行}

Android源码追踪—android:onClick

之前对源码的阅读,总是用时一通乱七八糟的跳转,以学会使用为目的;过了一段时间,就忘记了,因此打算将一些源码的阅读经历记录下来,也通过敲一遍的过程,加深理解。

最开始,用一个比较简单的例子来小试牛刀吧

对于View(Button、TextView等)的点击事件,常用的写法是通过 findViewById 获取View的实例,然后通过 setOnClickListener 设置监听事件,比如我们有如下Button控件。

设置点击事件(假设在Activity中)

但是还有一种写法是在xml布局中通过android:onClick属性直接指定点击执行的函数。

【思考】

首先我们知道诸如 android:xxx 之类的属性是会在某个attrs文件中定义的,此处的 android:onClick 是View的属性,定义在如下文件中。

在View的构造函数中,会解析出此属性的值。

看这里, 如果变量handlerName不为空,就会为此View设置点击事件了 ,这个handlerName就是onClick属性的值doSubmit,但这个点击事件,并不是我们所熟悉的OnClickListener。

进一步看看这个 DeclaredOnClickListener 类

DeclaredOnClickListener 实现了 OnClickListener ,其中重点是参数 mResolvedMethod 和 mResolvedContext 。

在onClick事件中最终通过反射 mResolvedMethod.invoke(mResolvedContext, v); 执行了doSubmit方法。

doSubmit的访问权限是否可以设置为private呢?

答案:不可以,因为源码中没有调用 mMethod.setAccessible(true); 注入所有修饰符。

其实在onClick属性的注释中就已经说明了。

android onclick是怎样实现的

Button button = (Button)findViewById(R.id.button1);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {TextView textview = (TextView)findViewById(R.id.textView1);textview.setText("Button");}});这种方式用findviewbyid通过id实例化出来这个button,然后通过设置button的listener监听对象,并同时实现接口OnClickListenter的OnClick()方法。这种方式的代码量不多,但是在java中,面向对象的思想,关于耦合,模块化它达不到。代码堆叠在一起,比较臃肿。

Android Fragment的布局中使用android:onClick 属性时需要注意的问题

下面是一个在fragment的布局中定义的一个点击事件 按照常规操作,我们需要在宿主中定义一个名为 onMessageViewClick 的public 方法 这样看起来没什么问题,但是跑起来直接报错: 在持有fragment的activity中定义改方法即可 1.报错信息:无法在对应的context中找到名为 onMessageViewClick 的方法(其实这里已经说的很明白了,找不到方法,在view的context中) 那看一下当我们点击view的时候系统是怎么寻找对应的方法的: 直接上截图,下面是view类中的一个内部类 看一下属性就明白这个类似干什么的了(膜拜) mHostView:定义了onClick属性的view mMethodName:方法名称 mResolvedContext:反射对象 mResolvedMethod:反射方法 所以view是通过反射的方式来调用方法的(大家应该不看源码都知道的),这里的mResolvedContext 是通过View.getContext获取的 那么,view的context中为什么找不到方法呀,我都定义了不是吗。但是,注意一下,我们定义的方法是在Fragment中,fragment,fragment是context吗?当然不是,看看fragment class的定义

Android按钮onclick事件是不是只能重写一次我每个按钮都重写一次好像立马死机,不可以吗新手勿喷谢谢

不是只能重写一次的,因为你的setcontentview不在oncreate里面,你学过生命周期吧,你在自定义的方法里,这样是无法刷新布局的,这样写是不对的另外死机是啥回事,写代码还会死机?你要实现按下按钮切换布局的话,要在oncreate里面写才可以

android onclick事件和ontouch事件是否会冲突

Button的onTouch,onClick,onLongClick事件发生先后顺序和关联:一,onTouch返回false首先是onTouch事件的down事件发生,此时,如果长按,触发onLongClick事件;然后是onTouch事件的up事件发生,up完毕,最后触发onClick事件。二,onTouch返回true首先是onTouch事件的down事件发生,然后是onTouch事件的up事件发生;期间不触发onClick和onLongClick事件三,onTouch:down返回true,up返回false:结果同二。机制分析: onTouch事件中:down事件返回值标记此次事件是否为点击事件(返回false,是点击事件;返回true,不记为点击事件),而up事件标记此次事件结束时间,也就是判断是否为长按。只要当down返回true时候,系统将不把本次事件记录为点击事件,也就不会触发onClick或者onLongClick事件了。因此尽管当up的时候返回false,系统也不会继续触发onClick事件了。四,onTouch:down返回false,up返回true:首先是onTouch事件的down事件发生,此时:长按,触发onLongClick事件,然后是onTouch事件的up事件发生,完毕。短按,先触发onTouch的up事件, 到一定时间后,自动触发onLongClick事件。机制分析: onTouch事件中:down事件返回值标记此次事件是否为点击事件(返回false,是点击事件;返回true,不记为点击事件),而up事件标记此次事件结束时间,也就是判断是否为长按。 当down返回false,标记此次事件为点击事件,而up返回了true,则表示此次事件一直没有结束,也就是一直长按下去了,达到长按临界时间后,自然触发长按事件,而onClick事件没有触发到

android中如何利用onclick事件启动线程

View.OnClickListener listener = new View.OnClickListener() {   @Override   public void onClick(View view) {            new Thread(new Runnable() {         @Override         public void run() {                     }      }).start();   }};

android onclick事件(android 点击事件 为什么不起作用)

本文编辑:admin

更多文章:


excel中index函数的用法(Excel中INDEX函数怎么使用)

excel中index函数的用法(Excel中INDEX函数怎么使用)

本文目录Excel中INDEX函数怎么使用excel里的index和match函数怎么使用excel中index()函数什么意思有何用途EXCEL工作簿中多个工作表如何应用函数INDEXexcel index函数Excel中INDEX函数怎

2024年6月24日 10:25

router是什么意思(vue的$route和$router有什么区别和关系呢)

router是什么意思(vue的$route和$router有什么区别和关系呢)

本文目录vue的$route和$router有什么区别和关系呢router什么意思vue的$route和$router有什么区别和关系呢1.router是VueRouter的一个对象,通过Vue.use(VueRouter)和VueRout

2024年6月27日 17:14

jdbc的作用(在java中JDBC的主要作用是什么和他的组成有哪些)

jdbc的作用(在java中JDBC的主要作用是什么和他的组成有哪些)

本文目录在java中JDBC的主要作用是什么和他的组成有哪些jmeter中jdbc的作用在java中JDBC的主要作用是什么和他的组成有哪些JDBC是由一系列连接(Connection)、SQL语句(Statement)和结果集(Resul

2024年7月4日 06:29

android系统签名怎么查看(Android怎样获取应用的签名信息)

android系统签名怎么查看(Android怎样获取应用的签名信息)

本文目录Android怎样获取应用的签名信息怎么查看android app的签名android中怎么看应用签名怎样查看android的apk文件的签名如何查看系统签名 android如何查看 android 数字签名Android怎样获取应

2024年5月26日 13:05

rank函数用于计算什么(RANK函数是作什么用的)

rank函数用于计算什么(RANK函数是作什么用的)

大家好,如果您还对rank函数用于计算什么不太了解,没有关系,今天就由本站为大家分享rank函数用于计算什么的知识,包括RANK函数是作什么用的的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录RANK函数是作什么用

2024年9月9日 23:20

个人主页 百度(百度个人主页是什么怎么进自己的)

个人主页 百度(百度个人主页是什么怎么进自己的)

本文目录百度个人主页是什么怎么进自己的如何能在百度里搜寻到自己的个人主页百度个人首页在哪百度个人主页是什么怎么进自己的知友您好?供您参考:百度知道是百度官方为网友提供的用于交流、学习的平台。也可理解为学校,个人主页是在校学生的成绩,记载着知

2024年6月20日 19:31

perl里面的uc(perl 中如何实现字符串大小写转换)

perl里面的uc(perl 中如何实现字符串大小写转换)

本文目录perl 中如何实现字符串大小写转换perl的排序Perl里面有lc这个关键字么perl 中如何实现字符串大小写转换lc, uc分别是小写和大写函数大小写字母转换:函数 uc (uppercase) 将所有的小写字母转成大写;函数

2024年7月22日 23:33

script hook rdr2(请问谁知道哪里有远程控制软件VNC的源码)

script hook rdr2(请问谁知道哪里有远程控制软件VNC的源码)

本文目录请问谁知道哪里有远程控制软件VNC的源码荒野大镖客2脚本挂钩错误荒野大镖客2mod大峡山小屋怎么安装请问谁知道哪里有远程控制软件VNC的源码vnc的源码安装与使用!!!VNC的原码安装与使用下载VNC Server与VNC view

2024年7月16日 06:04

css导航条随着页面移动(如何调整CSS导航栏的位置)

css导航条随着页面移动(如何调整CSS导航栏的位置)

本文目录如何调整CSS导航栏的位置如何实现制作的网页左侧能有一个跟着网页移动的导航栏,就像那种广告一样鼠标移到一个导航的按钮上,导航下边的内容就随之发生改变,用css怎么做呢如何设置左侧导航网页中部跟随滚动条浮动网页导航条宽度随着浏览器窗口

2024年6月16日 17:05

前端自学视频教程(正在自学前端,谁有前端视频教程啊)

前端自学视频教程(正在自学前端,谁有前端视频教程啊)

本文目录正在自学前端,谁有前端视频教程啊自学前端有哪些比较好的课程推荐国内学习前端最好的视频网站是那个求教:学习web前端开发应该学习的比较好的视频,请高手推荐一正在自学前端,谁有前端视频教程啊前端的前景很好,所以学习前端的人也很多,自学是

2024年6月5日 06:49

正则匹配两个汉字(正则表达式在一段文本中匹配到包含的两个汉字的某一行)

正则匹配两个汉字(正则表达式在一段文本中匹配到包含的两个汉字的某一行)

其实正则匹配两个汉字的问题并不复杂,但是又很多的朋友都不太了解正则表达式在一段文本中匹配到包含的两个汉字的某一行,因此呢,今天小编就来为大家分享正则匹配两个汉字的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录正则

2024年7月7日 18:50

alex是什么意思(Alex这个英文名是什么意思)

alex是什么意思(Alex这个英文名是什么意思)

本文目录Alex这个英文名是什么意思Alex什么意思Alex 什么意思,怎么读英语Alex是什么意思alex什么意思ALEX什么意思alex是什么意思alex中文是什么意思啊alex是啥意思Alex这个英文名是什么意思Alex 英 /’æl

2024年7月3日 16:06

青少年语言培训班(十大少儿英语培训机构排名有哪些)

青少年语言培训班(十大少儿英语培训机构排名有哪些)

本文目录十大少儿英语培训机构排名有哪些口才培训班主要学什么深圳英语培训机构前十名宜春口才课培训班排名前十有哪些青少年英语培训班课程怎样收费青少年英语培训班课程收费高吗效果怎样青少年口才培训班怎么选择小海豚口才教育教的好还是青少年宫教的好很多

2024年7月3日 08:03

php判断数据库是否连接成功(php pdo连接mysql如何判断数据库是否连接成功)

php判断数据库是否连接成功(php pdo连接mysql如何判断数据库是否连接成功)

本文目录php pdo连接mysql如何判断数据库是否连接成功php判断数据库是不是连接成功的测试例子php sql怎么判断有没有插入数据库成功php测试mysql数据库链接是否成功,但页面显示一片空白,高手帮帮忙PHP 判断数据库连接PH

2024年7月8日 13:31

cluster的同义词(有人能不能告诉我 crowd , cluster和throng 这三个单词的区别啊)

cluster的同义词(有人能不能告诉我 crowd , cluster和throng 这三个单词的区别啊)

大家好,关于cluster的同义词很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于有人能不能告诉我 crowd , cluster和throng 这三个单词的区别啊的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以

2024年7月29日 15:10

哪个前端框架最简单(目前流行的前端框架有哪些)

哪个前端框架最简单(目前流行的前端框架有哪些)

本文目录目前流行的前端框架有哪些后台管理系统,前端用什么框架开发比较好好用的前端ui框架前端开发框架有哪些目前常用的一些前端的框架有哪些轻量级的前端框架web前端开源框架哪个好用后台管理系统,前端框架用什么最好_前端框架有哪些目前流行的前端

2024年2月23日 18:00

php学校新闻管理系统代码(用php制作新闻页面的后台管理系统怎么设计.急用!!!)

php学校新闻管理系统代码(用php制作新闻页面的后台管理系统怎么设计.急用!!!)

各位老铁们好,相信很多人对php学校新闻管理系统代码都不是特别的了解,因此呢,今天就来为大家分享下关于php学校新闻管理系统代码以及用php制作新闻页面的后台管理系统怎么设计.急用!!!的问题知识,还望可以帮助大家,解决大家的一些困惑,下面

2024年8月23日 16:50

直方图和直条图怎么画(条形统计图怎么画)

直方图和直条图怎么画(条形统计图怎么画)

本文目录条形统计图怎么画画直方图的步骤是什么七年级美术统计图怎么画如何用Excel画直方图条形图怎么画画条形统计图的步骤条形统计图怎么画方法如下:工具:Excel2010,联想P50s系统:Windows 101、打开Excel软件,如图所

2024年6月26日 03:50

jquery修改css属性值(jquery修改css问题)

jquery修改css属性值(jquery修改css问题)

各位老铁们好,相信很多人对jquery修改css属性值都不是特别的了解,因此呢,今天就来为大家分享下关于jquery修改css属性值以及jquery修改css问题的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录j

2024年7月30日 08:50

英语单词thy可以怎么用?Java和pathy哪个好

英语单词thy可以怎么用?Java和pathy哪个好

本文目录英语单词thy可以怎么用Java和pathy哪个好spring boot+thymeleaf用什么实现图表比较好thy是什么意思英语Thy翻译成汝的还是你的那个更保持原本的味道英语单词thy可以怎么用比较古代英文的了,比如说莎士比亚

2024年5月15日 19:28

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1154
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1151
标签列表

热门搜索