按钮点击的三种方法及推广

在安卓中按钮点击操作有三种方法,现在记录下来学习:

第一种:

//第一种按钮响应方法
        Button btn1 =(Button) findViewById(R.id.btn1);
        
        btn1.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                System.out.println("第一个按钮被点击了");
            }
        });

第二种方法,使用this,此时要在mainactivity 继承implements OnClickListener:

public class MainActivity extends Activity implements OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        //第二种响应方法(mainActivity 要继承)implements OnClickListener
        Button btn2 =(Button) findViewById(R.id.btn2);
        btn2.setOnClickListener(this);
        
    }
   public void onClick(View v){
       System.out.println("第2个按钮被点击了");
   }
.....    

第三种方法:

此时没有用到资源ID,用到了按钮的OnClick属性,示例:

 <!-- 第三个按钮没有ID -->
<Button
        android:onClick="clickMe"
        android:layout_width="242dp"
        android:layout_height="64dp"
        android:text="按钮三" />

在.java中使用:

//第三种点击同名方法:使用了android:click="clickMe"
   public void clickMe(View v){
       System.out.println("第三个按钮:不要点我了");
   }

第三种方法推广:

此时,按钮多个同时出现,点击时都用按钮的OnClick的同一个方法:

按钮:

<Button
    android:id="@+id/btn11"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="clickGroup"
    android:text="按钮11" />

<Button
    android:id="@+id/btn12"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="clickGroup"
    android:text="按钮12" />

<Button
    android:id="@+id/btn13"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="clickGroup"
    android:text="按钮13" />

.java代码:

 //第三种的推广:使用了android:click="clickGroup"
 //View:系统会把触发这个方法的那个组件的对象作为view对象传进来
     public void clickGroup(View v){
         //通过对view对象的判断,就可以知道用户点击的到底是哪一个按钮
         //拿到按钮的id
         int id = v.getId();
         switch (id) {
         case R.id.btn11:
             System.out.println("按钮11点我了");
             break;
         case R.id.btn12:
             System.out.println("按钮12点我了");
             break;
         case R.id.btn13:
             System.out.println("按钮13点我了");
             break;

         }
    }

总代码:

package com.swust.click;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //第一种按钮响应方法
        Button btn1 =(Button) findViewById(R.id.btn1);
        
        btn1.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                System.out.println("第一个按钮被点击了");
            }
        });
        
        //第二种响应方法(mainActivity 要继承)implements OnClickListener
        Button btn2 =(Button) findViewById(R.id.btn2);
        btn2.setOnClickListener(this);
        
    }
   public void onClick(View v){
       System.out.println("第2个按钮被点击了");
   }
    
   //第三种点击同名方法:使用了android:click="clickMe"
   public void clickMe(View v){
       System.out.println("第三个按钮:不要点我了");
   }
   
 //第三种的推广:使用了android:click="clickGroup"
 //View:系统会把触发这个方法的那个组件的对象作为view对象传进来
     public void clickGroup(View v){
         //通过对view对象的判断,就可以知道用户点击的到底是哪一个按钮
         //拿到按钮的id
         int id = v.getId();
         switch (id) {
         case R.id.btn11:
             System.out.println("按钮11点我了");
             break;
         case R.id.btn12:
             System.out.println("按钮12点我了");
             break;
         case R.id.btn13:
             System.out.println("按钮13点我了");
             break;

         }
    }
}

前台使用了线性布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.swust.click.MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/btn1"
        android:layout_width="242dp"
        android:layout_height="64dp"
        android:text="按钮一" />
<Button
        android:id="@+id/btn2"
        android:layout_width="242dp"
        android:layout_height="64dp"
        android:text="按钮二" />
   <!-- 第三个按钮没有ID -->
<Button
        android:onClick="clickMe"
        android:layout_width="242dp"
        android:layout_height="64dp"
        android:text="按钮三" />
 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tishi" />

<Button
    android:id="@+id/btn11"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="clickGroup"
    android:text="按钮11" />

<Button
    android:id="@+id/btn12"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="clickGroup"
    android:text="按钮12" />

<Button
    android:id="@+id/btn13"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="clickGroup"
    android:text="按钮13" />

</LinearLayout>

 

posted @ 2015-10-13 15:37  平常心,平常心  阅读(486)  评论(0编辑  收藏  举报