android:onClick详解
博客专区 > 墨梅 的博客 > 博客详情
android:onClick详解
墨梅 发表于4年前
android:onClick详解
  • 发表于 4年前
  • 阅读 791
  • 收藏 2
  • 点赞 0
  • 评论 0

华为云·免费上云实践>>>   

摘要: android:onClick详解

public void (View v) 记得函数参数匹配  根据多态性以及函数指针原理这里的函数会注册给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>

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

             }

}

共有 人打赏支持
粉丝 15
博文 210
码字总数 42466
×
墨梅
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: