標籤:err 大寫 1.0 span 一個 support 事件監聽 enc cti
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種寫法