- 創建成員內部類
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button); Button but1 = (Button) findViewById(R.id.but01); //生成監聽器類的對象 ButtonListener buttonListener = new ButtonListener(); //為按鈕添加監聽器 but1.setOnClickListener(buttonListener); } //內部類 class ButtonListener implements View.OnClickListener { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "按鈕被點擊", Toast.LENGTH_SHORT).show(); } } }
- 創建匿名內部類
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button); Button but1 = (Button) findViewById(R.id.but01); //為按鈕添加監聽器 but1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "按鈕被點擊", Toast.LENGTH_SHORT).show(); } }); } }
- Activity 直接實現監聽接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button); Button but1 = (Button) findViewById(R.id.but01); //為按鈕添加監聽器 but1.setOnClickListener(this); } @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "按鈕被點擊", Toast.LENGTH_SHORT).show(); } }
- XML 文件OnClick 屬性實現監聽
xml 布局文件中,為button添加onclick屬性;
在對應的Activity中創建一個以onclick屬性值為名字的方法
修飾符為public 返回值為void 傳入參數為View類型
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.button); } public void buttonClick(View v){ Toast.makeText(MainActivity.this,"xml實現的監聽被點擊了",Toast.LENGTH_LONG).show(); } }
xml 文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/but01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="xml 實現監聽按鈕" android:onClick="buttonClick"/> </LinearLayout>