一文帶你瞭解各種方式實現Android的點擊事件


摘要:
  Android中獲取到按鈕後,我們一般會爲其添加點擊事件,而android中的點擊事件共有四種寫法,下面我們通過代碼一一去實現。

第一種方法:通過佈局文件中控件的屬性

基本步驟如下:
1、在activity_login.xml中給Button控件添加Android:onClick=”action”屬性,
2、在Activity中實現action方法,action方法必須滿足如下三個條件:
(1)方法的訪問修飾符必須是public;
(2)方法的名稱必須跟android:onClick=”action” 中的名稱完全一致
(3)形參必須是View類型
示例代碼如下:
在這裏插入圖片描述
layout佈局代碼:
在這裏插入圖片描述

第二種方法:通過內部實現類

基本步驟如下:
1、新建一個ClickListener類並實現View.OnClickListener接口,
2、重寫View.OnClickListener接口中的OnClick(View view)方法,
3、給Button綁定一個監聽器,並監聽一個點擊事件
示例代碼如下:
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

第三種方法:通過Activity實現OnClickLitener,

基本步驟如下:
1、讓LoginActivity直接實現View.OnClickListener
2、在LoginActivity類中重寫onClick方法
3、給Button綁定一個監聽器,並監聽一個點擊事件。
注:此時setOnClickListener傳入的是this
示例代碼如下: 在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

第四種方法:使用匿名內部類

基本步驟如下:
1、給Button綁定一個監聽器,並監聽一個點擊事件
2、在setOnClickListener方法中直接傳入一個OnClickListener對象,並實現OnClick方法
示例代碼如下: 在這裏插入圖片描述

總結:

事件寫法的思路:
1、根據控件ID去獲取控件;
2、設置控件的事件;
3、在事件方法中處理事件。

完整LoginActivity代碼:

package com.gx.hotel.ui;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.gx.hotel.R;

public class LoginActivity extends AppCompatActivity  /* implements View.OnClickListener*/{

    //控件
    private Button btnSubmit;  

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //設置佈局
        setContentView(R.layout.activity_login);

        //獲取控件  ctrl+alt+f
        btnSubmit = findViewById(R.id.btn_login_submit);   

        //②創建內部實現類對象
        //ClickListener clickListener=new ClickListener();
        //②設置點擊事件
        //btnSubmit.setOnClickListener(clickListener);

        //③設置點擊事件
        //btnSubmit.setOnClickListener(this);
  

        //④匿名內部實現類
        btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(LoginActivity.this,"提示:你點擊了按鈕, 匿名內部實現類",Toast.LENGTH_LONG).show();
            }
        });
    }


    //③ Activity實現OnClickLitener
    //@Override
    //public void onClick(View v) {
    //    switch (v.getId()){
    //        case R.id.btn_login_submit:
    //            Toast.makeText(LoginActivity.this,"提示:你點擊了按鈕, Activity實現OnClickLitener ",Toast.LENGTH_LONG).show();
    //            break;
    //    }
    //}


    //IDEA alt+Enter
    //②第二種事件寫法:內部實現類
    //class ClickListener implements View.OnClickListener{
    //
    //    @Override
    //    public void onClick(View v) {
    //        int id=v.getId();
    //        switch (id){
    //            case R.id.btn_login_submit:
    //                Toast.makeText(LoginActivity.this,"提示:你點擊了按鈕,內部實現類",Toast.LENGTH_LONG).show();
    //                break;
    //        }
    //    }
    //}


    /*①第一種事件寫法:結合layout文件聲明方法  不推薦使用*/
    //public void btnClick(View view){
    //    //參數 Context,text,duration
    //    //上下文,要提示的信息,提示顯示的時長
    //   Toast.makeText(LoginActivity.this,"提示:你點擊了按鈕",Toast.LENGTH_LONG).show();
    //}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章