1. 程式人生 > >Android 按鈕的響應點擊事件的4種寫法

Android 按鈕的響應點擊事件的4種寫法

是把 nac sta lns toast 一段 大寫 n) eat

Android按鈕的響應點擊事件

學習了按鈕的響應點擊事件,寫一下總結,寫的不好的希望大家能給出意見或建議。

這是layout xml文件 點擊事件只需要獲得Button的id或者onClick

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height
="match_parent"> <Button android:id="@+id/button1" //只需要看這行 1,2,3種方法看這個 android:layout_width="wrap_content" android:layout_height="wrap_content" //id我設置是button(b是小寫的) android:layout_alignParentTop="true" //onclick我設置的是Button(B是大寫的)
android:layout_centerHorizontal="true" android:layout_marginTop="135dp" android:onClick="Button1" //只需要看這行 第四種方法看這個 android:text="Button1"/> <Button android:id="@+id/button2" // 只需要看這行 1,2,3,種方法看這個 android:layout_width
="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_alignStart="@+id/button1" android:layout_below="@+id/button1" android:layout_marginTop="116dp" android:onClick="Button2" //只需要看這行 第四種方法看這個 android:text="Button2"/> </RelativeLayout>

第一種寫法:匿名內部 //覺得第四種最簡單

需要獲得Button的 android:id="@+id/button1" (b是小寫的)

package com.example.administrator.click1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt1_click = (Button) findViewById(R.id.button1);  //android :id="@+id/button1" 用的時候只需要把button1改成Button的id
bt1_click.setOnClickListener(
new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"按鍵一被點擊了", Toast.LENGTH_SHORT).show(); } }); //與上一段用法一樣 Button bt2_click = (Button) findViewById(R.id.button2); bt2_click.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"按鍵二被點擊了", Toast.LENGTH_SHORT).show(); } }); } }

第二種寫法:自定義事件監聽類

個人覺得和第一種一樣,只是把匿名內部的的方法用個類存放起來

package com.example.administrator.click1;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt1_click = (Button) findViewById(R.id.button1);
        Button bt2_click = (Button) findViewById(R.id.button2);
        bt1_click.setOnClickListener(new MyClickListener());  //與匿名差不多  只是把class new出去了
        bt2_click.setOnClickListener(new MyClickListener());
    }



    class MyClickListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {     //通過switch 判斷是哪一個按鍵按下的
            switch (v.getId()) {          //個人覺得自定義單擊事件監聽,有很多Button的時候用
                case R.id.button1:
                    Toast.makeText(MainActivity.this, "按鍵一被點擊了", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.button2:
                    Toast.makeText(MainActivity.this, "按鍵二被點擊了", Toast.LENGTH_SHORT).show();
                    break;
default:
break;
} } } }

第三種寫法:

用this替換

package com.example.administrator.click1;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bt1_click = (Button) findViewById(R.id.button1);
        Button bt2_click = (Button) findViewById(R.id.button2);
        bt1_click.setOnClickListener(this);    //與第二種差不多
        bt2_click.setOnClickListener(this);    
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button1:
                Toast.makeText(this, "按鍵一被點擊了", Toast.LENGTH_SHORT).show();
                break;
            case R.id.button2:
                Toast.makeText(this, "按鍵二被點擊了", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}

感覺這三種方法屬於一種方法

findViewById 找到button的id
然後用.setOnClickListener調用方法   第四種方法就與眾不同
第四種寫法:
package com.example.administrator.click1;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    //只需要把函數名字改成你設置的onclick的名字就可以了
    //只需要把函數名字改成你設置的onclick的名字就可以了
    //只需要把函數名字改成你設置的onclick的名字就可以了 
                //Button1(大寫的B)是onclick的
    public void Button1(View v) {
        Toast.makeText(this, "按鍵一被點擊", Toast.LENGTH_SHORT).show();
    }

               //Button2(大寫的B)是onclick的
    public void Button2(View v) {
        Toast.makeText(this, "按鍵二被點擊", Toast.LENGTH_SHORT).show();
    }
}

第四種覺得最簡單。

寫的不好的希望大家能給出意見或建議。

Android 按鈕的響應點擊事件的4種寫法