- 在每次使用時新實現(xiàn)一個OnClickListener接口
public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btnDoSomething);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doSomething(v);
}
});
}
public void doSomething(View view) {
/*do something here*/
}
}
- 讓這個頁面類實現(xiàn)OnClickListener接口
public class MainActivity extends Activity implements View.OnClickListener{
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btnDoSomething);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnDoSomething:
doSomething(v);
break;
default:
break;
}
}
public void doSomething(View view) {
/*do something here*/
}
}
- 多組合少繼承的原則,把OnClickListener接口作為一個屬性放到頁面類中
public class MainActivity extends Activity{
private Button btn;
private View.OnClickListener clickListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
doSomething(v);
}
};
btn = (Button) findViewById(R.id.btnDoSomething);
btn.setOnClickListener(clickListener);
}
public void doSomething(View view) {
/*do something here*/
}
}
- 把類中的點擊事件看作是一個對象固棚,新建一個類來實現(xiàn)這些事件
public class ClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
doSomething(v);
}
private void doSomething(View view) {
/*do something here*/
}
}
在使用的時候仙蚜,新建或者組合使用
public class MainActivity extends Activity{
private Button btn;
private ClickListener clickListener = new ClickListener();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btnDoSomething);
btn.setOnClickListener(clickListener);
}
}
- 在java類中定義好點擊事件要執(zhí)行的方法,在布局文件xml中調(diào)用
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.vip.veblonwang.myapplication.MainActivity">
<Button
android:id="@+id/btnDoSomething"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="share"
android:onClick="doSomething"/><!-- 這句是關(guān)鍵,點擊時執(zhí)行MainActivity中的doSomething方法 -->
</LinearLayout>
MainActivity .java
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void doSomething(View view) { //方法必須定義為public
/*do something here*/
}
}
個人理解就上面幾種實現(xiàn)方式了~
推薦使用第三汁汗、四種方式,其他方式不推薦