安卓開發筆記(十八):實現button按鈕事件的三種方法

来源:https://www.cnblogs.com/geeksongs/archive/2019/03/31/10632149.html
-Advertisement-
Play Games

Android開發中有三種主要的方式用於設置View的點擊事件,1、創建內部類;2、主類中實現OnClickListener介面;3、使用匿名內部類。這三種方式都用到了OnClickListener介面,只是不同形式而已。其中OnClickListener是監聽View點擊事件的介面,介面中定義控制項 ...


  Android開發中有三種主要的方式用於設置View的點擊事件,1、創建內部類;2、主類中實現OnClickListener介面;3、使用匿名內部類。這三種方式都用到了OnClickListener介面,只是不同形式而已。其中OnClickListener是監聽View點擊事件的介面,介面中定義控制項被點擊時的回調方法OnClick()。View需要在setOnclickListener(OnClickLisener listener)方法的參數中傳入OnClickListener介面監聽View的點擊事件。筆者這裡僅僅用了三種button的方式,以後有新的方式的話會再添加到裡面來,因為Button的實現方式比較多,自己常常不知道為啥就忘記了。

一、內部類實現

內部類實現的方法是:創建一個內部類實現OnClickListener介面並重寫onClick()方法,在方法中寫入點擊事件的邏輯。內部類寫完之後需要為按鈕設置setOnClickListener(Listener listener)屬性,在參數中傳入之前創建好的內部類對象即可。使用這種點擊事件的好處,當按鈕較多時可以在onClick(View v)方法中使用switch語句case屬性設置各自不同的點擊事件邏輯。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button =(Button)findViewById(R.id.button);
    button.setOnClickListener(new MyButton());
}
private class MyButton implements View.OnClickListener{
    @Override
    public void onClick(View view) {
        Toast.makeText(getApplicationContext(),"已點擊按鈕",Toast.LENGTH_SHORT).show();
    }
}
!

二、匿名內部類實現

     當按鈕較少或者只有一個按鈕時,就不需要再單獨創建一個類實現OnClickListener介面了,可以直接創建OnClickListener的匿名內部類傳入按鈕的setOnClickListener()參數中。
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(getApplicationContext(), "已點擊按鈕", Toast.LENGTH_SHORT).show();
        }
    });
}

三、Activity本身實現事件介面

除了以上兩種方法,還可以在主類中實現該介面,然後重寫onClick()方法,這裡需要註意的是,button.setOnCLickListener(this);方法中接收了一個參數this,這個this代表的是該Activity的引用。由於Activity實現了OnClickListener介面,所以這裡this代表了OnClickListener的引用,在方法中傳入this就代表該控制項綁定了點擊事件的介面。

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
    }
    @Override
        public void onClick(View view) {
            Toast.makeText(getApplicationContext(),"已點擊按鈕",Toast.LENGTH_SHORT).show();
        }
    }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Samba 服務 yum install samba mv smb.conf smb.conf.bak cat smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > smb.conf 與系統用戶映射關係 初次創建用戶samba資料庫 pd ...
  • 環境:MacOS 10.13.6 虛擬機:VirtualBox6.0(VirtualBox-6.0.4-128413-OSX.dmg) Linux:Centos7(CentOS-7-x86_64-Minimal-1810.iso) 一:虛擬機安裝 這個。。。。真沒啥好說的。。。略過 二:虛擬機創建C ...
  • 概述 資料庫相對於其它存儲軟體一個核心的特征是它支持事務,所謂事務的ACID就是原子性,一致性,隔離性和持久性。其中原子性,一致性,持久性更多是關註單個事務本身,比如,原子性要求事務中的操作要麼都提交,要麼都不提交;一致性要求事務的操作必須滿足定義的約束,包括觸發器,外鍵約束等;持久性則要求如果事務 ...
  • 我們知道資料庫中的統計信息的準確性是非常重要的。它會影響執行計劃。一直想寫一篇關於統計信息影響執行計劃的相關博客,但是都卡在如何構造一個合適的例子上,所以一直拖著沒有寫。巧合,最近在生產環境中遇到這麼一個案例,下麵對案例中的相關信息做了脫敏處理,有些中間步驟也省略了,只關註核心部分SQL。如下所示,... ...
  • 省市區三級數據(含港澳台釣魚島以及經濟開發區)和經緯度信息,準確有效! ...
  • 一、系統整體性能監測工具:uptime uptime命令用於查看伺服器運行了多長時間以及有多少個用戶登錄,快速獲知伺服器運行的負載情況。 load average,顯示了最近1,5,15分鐘的負荷情況。 它的值代表等待CPU處理的進程數,如果CPU沒有時間處理這些進程,load average值會升 ...
  • 在面試中被問到這樣的題目,當時被問蒙了,後來查閱了一下相關資料搞懂了一些,記錄一下。 題目:有一堆的用戶消費數據,欄位為id、城市、性別、消費總額等,要求選取每個城市消費總額的Top N。面試官提示,可以用python,也可以用任何sql語言。 這裡記錄的是Oracle的做法。查看表的信息: sel ...
  • 主界面代碼 主活動代碼: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...