導航:首頁 > 操作系統 > 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相關的資料

熱點內容
富士通單片機程序下載軟體 瀏覽:849
帶平方的運演算法則 瀏覽:934
姜振宇微表情pdf 瀏覽:381
如何看方舟伺服器的倍率 瀏覽:65
招行app如何設置退出登錄 瀏覽:422
程序員發文章一般多久 瀏覽:858
什麼是單片機定時器 瀏覽:82
無線路由器怎麼當伺服器 瀏覽:928
linux的and命令 瀏覽:164
做程序員入黨 瀏覽:542
php定時刪除session 瀏覽:597
什麼的命令填空 瀏覽:381
命令方塊做的坐騎模組 瀏覽:186
安卓rsa公鑰加密 瀏覽:768
北京免備案伺服器租用雲主機 瀏覽:574
100根香煙解壓 瀏覽:568
程序員最多可以干到多少歲 瀏覽:470
android主動回收內存 瀏覽:75
linux內存頁大小 瀏覽:305
開發框架的命令與語法 瀏覽:367