1.匿名內部類作為事件監聽器(沒有名字的內部類,只能使用一次)
監聽按鈕時,只需要設定監聽,并常見匿名內部類即可,
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btn_text = ((Button)v).getText().toString();
Toast.makeText(Main1Activity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
}
});
2.成員內部類作為事件監聽器
在activity中,自定義一個點擊事件監聽器的內部類,然后實作View.OnClickListener介面中的onclick方法,
class MyClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button2:
btn_text = button2.getText().toString();
Toast.makeText(Main2Activity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
break;
case R.id.button3:
btn_text = button3.getText().toString();
Toast.makeText(Main2Activity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
}
}
}
按鈕通過內部類實作點擊監聽:
button2=(Button)findViewById(R.id.button2);
button3=(Button)findViewById(R.id.button3);
MyClickListener myClickListener=new MyClickListener();
button2.setOnClickListener(myClickListener);
button3.setOnClickListener(myClickListener);
3.activity本身作為事件監聽器
首先活動應該實作View.OnClickListener介面
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
、、、
}
之后實作onClick方法,通過這樣的方式可以實作監聽器的復用,
@Override
public void onClick(View v){
switch(v.getId()){
case R.id.button4:
btn_text = button4.getText().toString();
Toast.makeText(Main3Activity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
break;
case R.id.button5:
btn_text = button5.getText().toString();
Toast.makeText(Main3Activity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
break;
}
}
注冊監聽,只需要將當前物件this給按鈕即可,
button4 = (Button)findViewById(R.id.button4);
button5 = (Button)findViewById(R.id.button5);
button4.setOnClickListener(this);
button5.setOnClickListener(this);
4.xml檔案中在按鈕上注冊處理點擊事件
給按鈕指定onClick屬性,android:onClick=”onClick”(onClick是方法名)
<Button
android:id="@+id/button6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button6"
android:onClick="click"/>
在activity中實作,格式為public void XXX(View v) ,必須是public型別,void回傳值,方法名與xml中定義的一致并接收一個View型別的引數,
public void click(View v){
btn_text = ((Button)v).getText().toString();
Toast.makeText(Main1Activity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
}
測驗代碼:
xml檔案中的代碼:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="MainActivity">
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button1"/>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button2"/>
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button3"/>
<Button
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button4"/>
<Button
android:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button5"/>
<Button
android:id="@+id/button6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button6"
android:onClick="click"/>
</LinearLayout>
主活動中的代碼:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button button1,button2,button3,button4,button5;
private String btn_text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=(Button)findViewById(R.id.button1);
button2=(Button)findViewById(R.id.button2);
button3=(Button)findViewById(R.id.button3);
button4=(Button)findViewById(R.id.button4);
button5=(Button)findViewById(R.id.button5);
//匿名內部類作為事件監聽器
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
btn_text = ((Button)v).getText().toString();
Toast.makeText(MainActivity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
}
});
//實作事件監聽器類
MainActivity.MyClickListener myClickListener=new MainActivity.MyClickListener();
button2.setOnClickListener(myClickListener);
button3.setOnClickListener(myClickListener);
button4.setOnClickListener(this);
button5.setOnClickListener(this);
}
//成員內部類作為事件監聽器
class MyClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button2:
btn_text = button2.getText().toString();
Toast.makeText(MainActivity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
break;
case R.id.button3:
btn_text = button3.getText().toString();
Toast.makeText(MainActivity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
}
}
}
//當activity本身作為事件監聽器,需要實作onClick方法
@Override
public void onClick(View v){
switch(v.getId()){
case R.id.button4:
btn_text = button4.getText().toString();
Toast.makeText(MainActivity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
break;
case R.id.button5:
btn_text = button5.getText().toString();
Toast.makeText(MainActivity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
break;
}
}
//xml檔案中在按鈕上注冊處理點擊事件時,需要實作的方法
public void click(View v){
btn_text = ((Button)v).getText().toString();
Toast.makeText(MainActivity.this, "點擊了"+btn_text, Toast.LENGTH_LONG).show();
}
}
運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/236621.html
標籤:其他
上一篇:HarmonyOS開發Toast
下一篇:優先級layout
