public void (View v) 记得函数参数匹配 根据多态性以及函数指针原理这里的函数会注册给android:onClick的监听器java
这样每一个button均可以使用onClck定义本身测处理方法,也能够共用,可是关于事件源的区分就没有那么方便了,可能须要获取坐标才能逻辑上判断是哪一个按钮或者根据android
完整例子web
main.xmlapp
<?xml version="1.0"encoding="utf-8"?>ide
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"函数
android:orientation="vertical"this
android:layout_width="fill_parent"spa
android:layout_height="fill_parent"设计
>指针
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:onClick = "xxx"
android:text="ok" android:id="@+id/button1" android:layout_width="wrap_content"android:layout_height="wrap_content"></Button>
<Button
android:onClick = "xxx"
android:text="no" android:id="@+id/button2" android:layout_width="wrap_content"android:layout_height="wrap_content"></Button>
</LinearLayout>
MainActivity.java
package com.sms;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainAcitivy extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void xxx(View v)
{
//能够直接转型可是注意有时候子类不匹配 ((Button)v).getText()
Button temp = (Button)v; //最好用instanceof判断子类型的实例,,注意子类型和子类不同,面向对象设计原理
if(temp.getText().toString().trim().equalsIgnoreCase("ok"))
{
Toast.makeText(this,"ok ", Toast.LENGTH_SHORT).show();
}
if(temp.getText().toString().trim().equalsIgnoreCase("no"))
{
Toast.makeText(this,"no ", Toast.LENGTH_LONG).show();
}
}
public void xxxx(View v) //也能够单独映射本身的方法,可是单独写代码过于冗余 因此建议统一 使用getText判断仍然是好方法,须要记住处理函数参数
{
Toast.makeText(this,"xxxx", Toast.LENGTH_SHORT).show();
}
}