android:onClick詳細

2671 ワード

public void(Viewv)は、関数パラメータマッチングが多態性および関数ポインタ原理に基づいてandroid:onClickのリスナーに登録されることを覚えています.このようにbuttonごとにonClckを使用して独自の測定処理方法を定義したり、共用したりすることができますが、イベントソースの区別についてはそれほど便利ではありません.どのボタンかを論理的に判断したり、
完全な例
main.xml
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    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
   android:onClick = "xxx"
   android:text="no" 
   android:id="@+id/button2" 
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>

</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();
  }

}