导航:首页 > 操作系统 > android调用click

android调用click

发布时间:2023-02-27 05:56:22

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中怎样调用本地js文件里的方法并得到返回值

您好,很高兴能帮助您,
Android中webview和js之间的交互
1.android中利用webview调用网页上的js代码。
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:
mWebView.getSettings().setjavaScriptEnabled(true);
mWebView.loadUrl("javascript:test()");
2. 网页上调用android中java代码的方法
在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
Toast.makeText(Test.this, "测试调用java", Toast.LENGTH_LONG).show();
}
});
}
}, "demo");
在网页中,只需要像调用js方法一样,进行调用就可以
<div id='b'><a onclick="window.demo.clickOnAndroid()">b.c</a></div>
3. Java代码调用js并传参
首先需要带参数的js函数,如function test(str),然后只需在调用js时传入参数即可,如下所示:
mWebView.loadUrl("javascript:test('aa')");
4.Js中调用java函数并传参
首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示:
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid(final int i) {
mHandler.post(new Runnable() {
public void run() {
int j = i;
j++;
Toast.makeText(Test.this, "测试调用java" + String.valueOf(j), Toast.LENGTH_LONG).show();
}
});
}
}, "demo");
然后在html页面中,利用如下代码<div id='b'><a onclick="window.demo.clickOnAndroid(2)">b.c</a></div>,
即可实现调用
你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”!
如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!

阅读全文

与android调用click相关的资料

热点内容
程序员37岁照片 浏览:296
哪里找程序员好 浏览:578
java无向图 浏览:207
怎样繁重工作之余解压 浏览:516
c语言二级程序大题怎么编译 浏览:438
单片机电子音响实验 浏览:323
算法工程师叫程序员吗 浏览:367
python读写共享文件 浏览:902
如何将服务器的数据迁移到云端 浏览:940
c调用javajni 浏览:414
多边形中心点算法 浏览:328
o2o源码论坛 浏览:1001
python怎么设置unicode 浏览:220
为什么苹果平板屏幕比安卓平板大 浏览:465
通过运动解压的例子 浏览:389
HPLSQL源码 浏览:170
压缩机各配合间隙 浏览:845
掌上地球怎么下载安卓版 浏览:631
服务器做什么类型的好 浏览:198
安卓app怎么设置图标风格 浏览:310