安卓按鈕新增監聽的三種方法
阿新 • • 發佈:2019-02-01
第一種,匿名內部類
匿名內部類一般通過以下程式碼完成,顧名思義,通過傳入匿名內部類來實現監聽並寫出對應的事件處理
btButton.setOnClickListener(new OnClickListener() {
@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
}
});
第二種,通過當前類實現OnClickListener介面並在其必須實現的onClick方法中新增事件
public class MainActivity extends Activity implements OnClickListener
btButton2.setOnClickListener(this);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
}
第三種,在佈局檔案中新增 android:onClick屬性來實現。這種和javascript的onclick寫法是一樣的,屬性後面的值是方法名稱。定義好後,需要在onCreate()方法中寫出該方法,並且該方法必須用View 作為引數傳入。比如你定義了 android:onClick="sing",那麼你就必須在當前類中寫上 sing(view v)方法。
<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />
首先是佈局檔案activity_main.xml
<LinearLayout 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:orientation="vertical"
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="com.example.buttononclik.MainActivity" >
<Button
android:id="@+id/bt1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bt1" />
<Button
android:id="@+id/bt2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bt2" />
注意,下面兩個按鈕多了android:onClick屬性。這個屬性的作用就是當被點選 時候就呼叫設定的方法,"@string/method" 方法名可以隨便起,這裡我們引用"@string/method",值為onclickMethod。這個一點和javascript很像。也就是說,其實這裡我們是不通過findViewById()來取得按鈕的。所以id是可以不用設定的。那麼下面我們設定id是因為我用了兩個按鈕,並著倆個按鈕的android:onClick屬性都設定為onclickMethod,所以如果要對相同方法名,我們需要id作為判斷,如果方法名設定為不一樣,我們完全可以不用設定id。
這個方法需要在當前類中寫上對於的方法來處理監聽事件。
<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />
<Button
android:id="@+id/bt4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt4" />
</LinearLayout>
然後是java檔案 MainActivity.java
package com.example.buttononclik;
import android.annotation.SuppressLint;
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{
//定義要用到的屬性
private Button btButton;
private Button btButton2;
private String tipsString;
private String tipsString2;
private String tipsString3;
private String tipsString4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//載入佈局檔案
setContentView(R.layout.activity_main);
btButton = (Button) findViewById(R.id.bt1);
tipsString = this.getString(R.string.tips);
tipsString2 = this.getString(R.string.tips2);
tipsString3 = this.getString(R.string.tips3);
tipsString4 = this.getString(R.string.tips4);
btButton2 = (Button) findViewById(R.id.bt2);
/*當前類實現了OnClickListener介面,
所以我們可以傳入當前類物件this作為引數,並在下面方法寫事件*/
btButton2.setOnClickListener(this);
//通過setOnClickListener方法並傳入匿名內部類OnClickListener來實現監聽
btButton.setOnClickListener(new OnClickListener() {
@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
}
});
}
//這個是繼承了OnClickListener方法所要實現的方法,監聽事件可以在這個方法寫
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
}
public void onclickMethod(View v){
int id = v.getId();
switch (id) {
case R.id.bt3:
Toast.makeText(MainActivity.this,tipsString3 , Toast.LENGTH_SHORT).show();
break;
case R.id.bt4:
Toast.makeText(MainActivity.this,tipsString4 , Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
然後是字串檔案strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">buttonOnclik</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="bt1">內部類實現監聽</string>
<string name="tips">通過匿名內部類實現監聽</string>
<string name="bt2">通過實現OnCllickListener介面實現監聽</string>
<string name="tips2">通過實現OnClickListener介面新增監聽</string>
<string name="method">onclickMethod</string>
<string name="bt3">通過設定Onclick屬性監聽</string>
<string name="bt4">作用是為了用id區分bt3</string>
<string name="tips3">如果不是有要區別兩個相同Onclick屬性的按鈕,id可以不用設定</string>
<string name="tips4">第四個按鈕被點選了</string>第一種,匿名內部類
匿名內部類一般通過以下程式碼完成,顧名思義,通過傳入匿名內部類來實現監聽並寫出對應的事件處理
btButton.setOnClickListener(new OnClickListener() {
@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
}
});
第二種,通過當前類實現OnClickListener介面並在其必須實現的onClick方法中新增事件
public class MainActivity extends Activity implements OnClickListener
========================================
btButton2.setOnClickListener(this);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
}
第三種,在佈局檔案中新增 android:onClick屬性來實現。這種和javascript的onclick寫法是一樣的,屬性後面的值是方法名稱。定義好後,需要在onCreate()方法中寫出該方法,並且該方法必須用View 作為引數傳入。比如你定義了 android:onClick="sing",那麼你就必須在當前類中寫上 sing(view v)方法。
<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />
首先是佈局檔案activity_main.xml
<LinearLayout 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:orientation="vertical"
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="com.example.buttononclik.MainActivity" >
<Button
android:id="@+id/bt1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bt1" />
<Button
android:id="@+id/bt2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bt2" />
<!--
注意,下面兩個按鈕多了android:onClick屬性。這個屬性的作用就是當被點選
時候就呼叫設定的方法,"@string/method" 方法名可以隨便起,這裡我們引用
"@string/method",值為onclickMethod。這個一點和javascript很像。也就
是說,其實這裡我們是不通過findViewById()來取得按鈕的。所以id是可以不用
設定的。那麼下面我們設定id是因為我用了兩個按鈕,並著倆個按鈕的
android:onClick屬性都設定為onclickMethod,所以如果要對相同方法名,我們
需要id作為判斷,如果方法名設定為不一樣,我們完全可以不用設定id。
這個方法需要在當前類中寫上對於的方法來處理監聽事件。 -->
<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />
<Button
android:id="@+id/bt4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt4" />
</LinearLayout>
然後是java檔案 MainActivity.java
package com.example.buttononclik;
import android.annotation.SuppressLint;
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{
//定義要用到的屬性
private Button btButton;
private Button btButton2;
private String tipsString;
private String tipsString2;
private String tipsString3;
private String tipsString4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//載入佈局檔案
setContentView(R.layout.activity_main);
btButton = (Button) findViewById(R.id.bt1);
tipsString = this.getString(R.string.tips);
tipsString2 = this.getString(R.string.tips2);
tipsString3 = this.getString(R.string.tips3);
tipsString4 = this.getString(R.string.tips4);
btButton2 = (Button) findViewById(R.id.bt2);
/*當前類實現了OnClickListener介面,
所以我們可以傳入當前類物件this作為引數,並在下面方法寫事件*/
btButton2.setOnClickListener(this);
//通過setOnClickListener方法並傳入匿名內部類OnClickListener來實現監聽
btButton.setOnClickListener(new OnClickListener() {
@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
}
});
}
//這個是繼承了OnClickListener方法所要實現的方法,監聽事件可以在這個方法寫
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
}
public void onclickMethod(View v){
int id = v.getId();
switch (id) {
case R.id.bt3:
Toast.makeText(MainActivity.this,tipsString3 , Toast.LENGTH_SHORT).show();
break;
case R.id.bt4:
Toast.makeText(MainActivity.this,tipsString4 , Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
然後是字串檔案strings.xml
匿名內部類一般通過以下程式碼完成,顧名思義,通過傳入匿名內部類來實現監聽並寫出對應的事件處理
btButton.setOnClickListener(new OnClickListener() {
@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
}
});
第二種,通過當前類實現OnClickListener介面並在其必須實現的onClick方法中新增事件
public class MainActivity extends Activity implements OnClickListener
btButton2.setOnClickListener(this);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
}
第三種,在佈局檔案中新增 android:onClick屬性來實現。這種和javascript的onclick寫法是一樣的,屬性後面的值是方法名稱。定義好後,需要在onCreate()方法中寫出該方法,並且該方法必須用View 作為引數傳入。比如你定義了 android:onClick="sing",那麼你就必須在當前類中寫上 sing(view v)方法。
<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />
首先是佈局檔案activity_main.xml
<LinearLayout 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:orientation="vertical"
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="com.example.buttononclik.MainActivity" >
<Button
android:id="@+id/bt1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bt1" />
<Button
android:id="@+id/bt2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bt2" />
注意,下面兩個按鈕多了android:onClick屬性。這個屬性的作用就是當被點選 時候就呼叫設定的方法,"@string/method" 方法名可以隨便起,這裡我們引用"@string/method",值為onclickMethod。這個一點和javascript很像。也就是說,其實這裡我們是不通過findViewById()來取得按鈕的。所以id是可以不用設定的。那麼下面我們設定id是因為我用了兩個按鈕,並著倆個按鈕的android:onClick屬性都設定為onclickMethod,所以如果要對相同方法名,我們需要id作為判斷,如果方法名設定為不一樣,我們完全可以不用設定id。
這個方法需要在當前類中寫上對於的方法來處理監聽事件。
<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />
<Button
android:id="@+id/bt4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt4" />
</LinearLayout>
然後是java檔案 MainActivity.java
package com.example.buttononclik;
import android.annotation.SuppressLint;
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{
//定義要用到的屬性
private Button btButton;
private Button btButton2;
private String tipsString;
private String tipsString2;
private String tipsString3;
private String tipsString4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//載入佈局檔案
setContentView(R.layout.activity_main);
btButton = (Button) findViewById(R.id.bt1);
tipsString = this.getString(R.string.tips);
tipsString2 = this.getString(R.string.tips2);
tipsString3 = this.getString(R.string.tips3);
tipsString4 = this.getString(R.string.tips4);
btButton2 = (Button) findViewById(R.id.bt2);
/*當前類實現了OnClickListener介面,
所以我們可以傳入當前類物件this作為引數,並在下面方法寫事件*/
btButton2.setOnClickListener(this);
//通過setOnClickListener方法並傳入匿名內部類OnClickListener來實現監聽
btButton.setOnClickListener(new OnClickListener() {
@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
}
});
}
//這個是繼承了OnClickListener方法所要實現的方法,監聽事件可以在這個方法寫
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
}
public void onclickMethod(View v){
int id = v.getId();
switch (id) {
case R.id.bt3:
Toast.makeText(MainActivity.this,tipsString3 , Toast.LENGTH_SHORT).show();
break;
case R.id.bt4:
Toast.makeText(MainActivity.this,tipsString4 , Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
然後是字串檔案strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">buttonOnclik</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="bt1">內部類實現監聽</string>
<string name="tips">通過匿名內部類實現監聽</string>
<string name="bt2">通過實現OnCllickListener介面實現監聽</string>
<string name="tips2">通過實現OnClickListener介面新增監聽</string>
<string name="method">onclickMethod</string>
<string name="bt3">通過設定Onclick屬性監聽</string>
<string name="bt4">作用是為了用id區分bt3</string>
<string name="tips3">如果不是有要區別兩個相同Onclick屬性的按鈕,id可以不用設定</string>
<string name="tips4">第四個按鈕被點選了</string>第一種,匿名內部類
匿名內部類一般通過以下程式碼完成,顧名思義,通過傳入匿名內部類來實現監聽並寫出對應的事件處理
btButton.setOnClickListener(new OnClickListener() {
@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
}
});
第二種,通過當前類實現OnClickListener介面並在其必須實現的onClick方法中新增事件
public class MainActivity extends Activity implements OnClickListener
========================================
btButton2.setOnClickListener(this);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
}
第三種,在佈局檔案中新增 android:onClick屬性來實現。這種和javascript的onclick寫法是一樣的,屬性後面的值是方法名稱。定義好後,需要在onCreate()方法中寫出該方法,並且該方法必須用View 作為引數傳入。比如你定義了 android:onClick="sing",那麼你就必須在當前類中寫上 sing(view v)方法。
<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />
首先是佈局檔案activity_main.xml
<LinearLayout 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:orientation="vertical"
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="com.example.buttononclik.MainActivity" >
<Button
android:id="@+id/bt1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bt1" />
<Button
android:id="@+id/bt2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bt2" />
<!--
注意,下面兩個按鈕多了android:onClick屬性。這個屬性的作用就是當被點選
時候就呼叫設定的方法,"@string/method" 方法名可以隨便起,這裡我們引用
"@string/method",值為onclickMethod。這個一點和javascript很像。也就
是說,其實這裡我們是不通過findViewById()來取得按鈕的。所以id是可以不用
設定的。那麼下面我們設定id是因為我用了兩個按鈕,並著倆個按鈕的
android:onClick屬性都設定為onclickMethod,所以如果要對相同方法名,我們
需要id作為判斷,如果方法名設定為不一樣,我們完全可以不用設定id。
這個方法需要在當前類中寫上對於的方法來處理監聽事件。 -->
<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />
<Button
android:id="@+id/bt4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt4" />
</LinearLayout>
然後是java檔案 MainActivity.java
package com.example.buttononclik;
import android.annotation.SuppressLint;
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{
//定義要用到的屬性
private Button btButton;
private Button btButton2;
private String tipsString;
private String tipsString2;
private String tipsString3;
private String tipsString4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//載入佈局檔案
setContentView(R.layout.activity_main);
btButton = (Button) findViewById(R.id.bt1);
tipsString = this.getString(R.string.tips);
tipsString2 = this.getString(R.string.tips2);
tipsString3 = this.getString(R.string.tips3);
tipsString4 = this.getString(R.string.tips4);
btButton2 = (Button) findViewById(R.id.bt2);
/*當前類實現了OnClickListener介面,
所以我們可以傳入當前類物件this作為引數,並在下面方法寫事件*/
btButton2.setOnClickListener(this);
//通過setOnClickListener方法並傳入匿名內部類OnClickListener來實現監聽
btButton.setOnClickListener(new OnClickListener() {
@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
}
});
}
//這個是繼承了OnClickListener方法所要實現的方法,監聽事件可以在這個方法寫
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
}
public void onclickMethod(View v){
int id = v.getId();
switch (id) {
case R.id.bt3:
Toast.makeText(MainActivity.this,tipsString3 , Toast.LENGTH_SHORT).show();
break;
case R.id.bt4:
Toast.makeText(MainActivity.this,tipsString4 , Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
然後是字串檔案strings.xml