目錄
一、在xml中設定按鍵的onClick綁定的函數
1.1、xml檔案
1.2、java檔案
1.3、完整代碼
二、自定義類實作按鍵監聽事件的接OnClickListener
1.1、實作接口類,在類中實作onclicked方法
1.2、綁定 局部變量button和xml中的button, findViewById
1.3、為前面做的準備進行綁定。使得按鍵被按下後執行你寫的業務代碼
1.4、完整java代碼
三、匿名内部類實作按鍵響應
四、MainActivity實作OnClickListener接口
第一種是最容易的,剩下的3種都是圍繞OnClickListener接口來實作
一、在xml中設定按鍵的onClick綁定的函數
1.1、xml檔案
使用onClick可以定義一個函數,這個函數在java中實作,按鍵被點選後會去調用這個函數
android:onClick="bottonBeCliecked"
1.2、java檔案
- 去實作xml綁定的函數,使用關鍵字public
public void bottonBeCliecked(View v){ }
- 可以使用v.getId(傳回按下按鍵的id号)和R.id.but1(傳回指定按鍵的id号,but1),判斷是哪個按鍵按下的,前提是xml裡面加了按鍵id
android:id="@+id/but1"
public void bottonBeCliecked(View v){ switch(v.getId()){ case R.id.but1: System.out.println("按鍵一被按下"); break; case R.id.but2: System.out.println("按鍵二被按下"); break; } }
-
Toast.makeText(context, text, duration) 在安卓APP界面的下方顯示
Toast.makeText 構造方法 ,show()方法
context:this
text:顯示的東西
duration:顯示的時長,0
Toast.makeText(this, "按鍵一被按下", 0).show();
1.3、完整代碼
xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/but1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按鍵1"
android:onClick="bottonBeCliecked"
/>
<Button
android:id="@+id/but2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="按鍵2"
android:onClick="bottonBeCliecked"
/>
</RelativeLayout>
java
package com.example.xw;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void bottonBeCliecked(View v){
switch(v.getId()){
case R.id.but1:
Toast.makeText(this, "按鍵一被按下", 0).show();
System.out.println("按鍵一被按下");
break;
case R.id.but2:
Toast.makeText(this, "按鍵二被按下", 0).show();
System.out.println("按鍵二被按下");
break;
}
}
}
二、自定義類實作按鍵監聽事件的接OnClickListener
1.1、實作接口類,在類中實作onclicked方法
class MyClieckHandler implements View.OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.but1:
System.out.println("按鍵一被按下");
break;
case R.id.but2:
System.out.println("按鍵二被按下");
break;
}
}
}
1.2、綁定 局部變量button和xml中的button, findViewById
Button btn1;
Button btn2;
btn1 = (Button) findViewById(R.id.but1);
btn2 = (Button) findViewById(R.id.but2);
1.3、為前面做的準備進行綁定。使得按鍵被按下後執行你寫的業務代碼
btn1.setOnClickListener(new MyClieckHandler());
btn2.setOnClickListener(new MyClieckHandler());
1.4、完整java代碼
package com.example.xw;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
class MyClieckHandler implements View.OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.but1:
System.out.println("按鍵一被按下");
break;
case R.id.but2:
System.out.println("按鍵二被按下");
break;
}
}
}
public class MainActivity extends Activity {
Button btn1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.but1);
btn2 = (Button) findViewById(R.id.but2);
btn1.setOnClickListener(new MyClieckHandler());
btn2.setOnClickListener(new MyClieckHandler());
}
}
三、匿名内部類實作按鍵響應
和第二種方法一樣,隻是寫成了内部類
- 和方法2一樣,綁定 局部變量button和xml中的button, findViewById
- 編寫内部類
- 完整代碼
package com.example.xw; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { Button btn1; Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.but1); btn2 = (Button) findViewById(R.id.but2); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub System.out.println("按鍵一被按下"); Toast.makeText(MainActivity.this, "按鍵一被按下", 0).show(); } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub System.out.println("按鍵二被按下"); Toast.makeText(MainActivity.this, "按鍵二被按下", 0).show(); } }); } }
四、MainActivity實作OnClickListener接口
- 在MainActivity類中實作接口
- 和第2種方法一樣,都需要綁定局部變量button和xml中的button,setOnClickListener使得按鍵被按下後執行你寫的業務代碼
Button btn1; Button btn2; btn1 = (Button) findViewById(R.id.but1); btn2 = (Button) findViewById(R.id.but2); btn1.setOnClickListener(this); btn2.setOnClickListener(this);
- 實作接口裡的方法
- 完整代碼
package com.example.xw; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { Button btn1; Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.but1); btn2 = (Button) findViewById(R.id.but2); btn1.setOnClickListener(this); btn2.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.but1: Toast.makeText(this, "按鍵一被按下", 0).show(); System.out.println("按鍵一被按下"); break; case R.id.but2: Toast.makeText(this, "按鍵二被按下", 0).show(); System.out.println("按鍵二被按下"); break; } } }
師承上官可程式設計 —— 陳立臣