Button的四种监听方式

        Button按钮设置点击的四种监听方式

注:加粗放大的都是改变的代码

1.使用匿名内部类的形式进行设置

  使用匿名内部类的形式,直接将需要设置的onClickListener接口对象初始化,内部的onClick方法会在按钮被点击的时候执行

  第一个活动的java代码:

 1 package com.sanlian.buttontest;
 2
 3 import android.content.Intent;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.Button;
 8
 9 public class MainActivity extends AppCompatActivity {
10
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15         //通过id找到关联布局中的view控件
16         Button btn = (Button) findViewById(R.id.btn);
17         //给Button按钮添加点击的监听
18         btn.setOnClickListener(new View.OnClickListener() {
19             @Override
20             //只要当前的设置的监听器被触发,这个方法就会被执行
21             public void onClick(View v) {
22                 startActivity(new Intent(MainActivity.this,SecondAty.class));
23             }
24         });
25     }
26 }

第一个活动的xml代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.sanlian.buttontest.MainActivity"
11     >
12
13     <Button
14         android:id="@+id/btn"
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content"
17         android:text="点我"/>
18 </RelativeLayout>

第二个活动的java代码:

 1 package com.sanlian.buttontest;
 2
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.text.SpannableString;
 6 import android.text.style.StyleSpan;
 7 import android.text.style.TypefaceSpan;
 8 import android.widget.TextView;
 9
10 public class SecondAty extends AppCompatActivity {
11
12     @Override
13     protected void onCreate(Bundle savedInstanceState) {
14         super.onCreate(savedInstanceState);
15         setContentView(R.layout.activity_second_aty);
16
17
18
19     }
20 }

第二个活动的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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: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.sanlian.buttontest.SecondAty">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是第二个activty"/>
</RelativeLayout>

程序运行结果截图:

2.在xml文件中定义onClick属性,java代码中对应方法

在xml中定义onClick属性。属性中对应的值需要在java代码中编写对应的方法名。
注意:参数中的View必须-----》方法类似于:public void xxx(View v)

第一个活动的java代码 :

 1 package com.sanlian.buttontest;
 2
 3 import android.content.Intent;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.Button;
 8
 9 public class MainActivity extends AppCompatActivity {
10
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15     }
16     public void skip(View v){
17         startActivity(new Intent(MainActivity.this,SecondAty.class));
18     }
19
20
21 }

第一个活动的xml代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.sanlian.buttontest.MainActivity"
11     >
12
13     <Button
14         android:id="@+id/btn"
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content"
17        android:onClick="skip"
18         android:text="点我"/>
19 </RelativeLayout>

其他的和匿名内部类的方法一样。

3.Activity 实现onClickListener接口

在给Button按钮设置点击的监听的时候直接让当前的Activity实现onClickListener接口,这样传入的监听对象就可以直接使用当前Activity.this

第一个活动的java代码:

 1 package com.sanlian.buttontest;
 2
 3 import android.content.Intent;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.Button;
 8
 9 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
10
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15         //找到控件的id,也叫控件的初始化
16         Button btn = (Button) findViewById(R.id.btn);
17         //给Button按钮设置监听
18         btn.setOnClickListener(this);
19     }
20
21
22
23     public void onClick(View v) {
24         //启动另一个activity
25         startActivity(new Intent(MainActivity.this,SecondAty.class));
26
27         //使用swith查找要点击的按钮的id
28         /*switch (v.getId()){
29             case R.id.btn:
30                 startActivity(new Intent(MainActivity.this,SecondAty.class));
31                 break;
32             default:
33                 break;
34         }*/
35     }
36 }

第一个活动的xml代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.sanlian.buttontest.MainActivity"
11     >
12
13     <Button
14         android:id="@+id/btn"
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content"
17         android:text="点我"/>
18 </RelativeLayout>

其他的和第一个方法一样

4.其他类实现onClickListener接口

  让另外一个类来实现onClickListener接口。这样如果控件在需要设置点击监听的时候,直接传入该类的对象即可。

第一个活动的java代码:

 1 package com.sanlian.buttontest;
 2
 3 import android.content.Intent;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.util.Log;
 7 import android.view.View;
 8 import android.widget.Button;
 9
10 public class MainActivity extends AppCompatActivity{
11
12     @Override
13     protected void onCreate(Bundle savedInstanceState) {
14         super.onCreate(savedInstanceState);
15         setContentView(R.layout.activity_main);
16         //找到控件的id,也叫控件的初始化
17         Button btn = (Button) findViewById(R.id.btn);
18         Button btn2 = (Button) findViewById(R.id.btn2);
19         //给Button按钮设置监听
20         myListener mylistener = new myListener();
21         btn.setOnClickListener(mylistener);
22         btn2.setOnClickListener(mylistener);
23     }
24     class myListener implements View.OnClickListener {
25         @Override
26         //参数v:就是触发点击的View控件。在这里就是被点击了Button按钮
27         public void onClick(View v) {
28             switch(v.getId()){
29                 case R.id.btn:
30                     Log.i("TAG","你点击了button1按钮");
31                     break;
32                 case R.id.btn2:
33                     Log.i("TAG","你点击了button2按钮");
34             }
35
36         }
37     }
38 
39 }

第一个活动的xml代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.sanlian.buttontest.MainActivity"
11     >
12
13     <Button
14         android:id="@+id/btn"
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content"
17         android:text="点我"/>
18
19     <Button
20         android:id="@+id/btn2"
21         android:layout_width="wrap_content"
22         android:layout_height="wrap_content"
23         android:text="点我"/>
24 
25
26 </LinearLayout>

实现的结果截图:

时间: 2024-11-05 16:23:42

Button的四种监听方式的相关文章

Android中Button的五种监听事件

简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activity本身作为事件监听器,实现onClickListener5.外部类作为监听器 ButtonListenerActivity.class public class ButtonListenerActivity extends AppCompatActivity implements View.On

java中的四种监听类用法

在此列举四种方法: 自身类实现ActionListener接口,作为事件监听器 通过匿名类处理 通过内部类处理 通过外部类处理 下面依次介绍: 第一种:自身类实现ActionListener接口,作为事件监听器. 这种方法是最基本的,也是初学者经常使用的,我当初即是如此. import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent;

RecyclerView的2种监听方式

NO.1:在自定义适配器的ViewHolder里面写监听事件 //RecyclerView适配器 public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context mContext; private LayoutInflater mLayoutInflater; private String[] mCityName; public RecyclerVi

Button的四种实现方式

/** * Button的四种写法 */ //第一种先获取button,然后给button添加监听事件,创建实现OnClickListener接口的类, //在接口类里实现button的响应事件. Button callBtn = (Button) this.findViewById(R.id.callBtn); callBtn.setOnClickListener(new MyListener()); //创建实现接口的类 public class MyListener implements

android基础之点击监听器的2种监听实现

点击监听器接口:onClickListener 抽象函数 onClick(View v) 有2个方法实现监听: 1:当前类继承点击监听器接口 package com.example.button; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; im

自己定义对象的监听方式

问题描写叙述: 当一个事件的触发不定期的时候,即我们不知道这个触发何时来到,可是我们却要对这个触发运行某些方法,怎样实现? 可能的解决方式: 我当时就想到了,这个问题类似与Android的部件监听(我没有去看Android的源代码,太懒了...).因为如今还在研读Thinking in Java这样的入门书籍,突然来了想法,罗列例如以下,能够通过接口. 以下是我写的一个測试的样例 首先是一个类似Button的部件 package com.example.androidtest2.service;

自定义对象的监听方式

问题描述: 当一个事件的触发不定期的时候,即我们不知道这个触发何时来到,但是我们却要对这个触发执行某些方法,如何实现? 可能的解决方案: 我当时就想到了,这个问题类似与Android的部件监听(我没有去看Android的源码,太懒了...).由于现在还在研读Thinking in Java这种入门书籍,突然来了想法,罗列如下,可以通过接口. 下面是我写的一个测试的例子 首先是一个类似Button的部件 package com.example.androidtest2.service; /** *

OnClickListener两种监听方法

1 //1种:接口OnClickListener ,在onclick响应 2 public class MainActivity extends Activity implements OnClickListener { //这个类前提要接口OnClickListener 3 4 private Button receive; //按钮的初始化 5 private Button falsewifiButton; 6 7 public void init(){ 8 receive=(Button)

【laravel】Eloquent 模型事件和监听方式

所有支持的模型事件 在 Eloquent 模型类上进行查询.插入.更新.删除操作时,会触发相应的模型事件,不管你有没有监听它们.这些事件包括: retrieved 获取到模型实例后触发 creating 插入到数据库前触发 created 插入到数据库后触发 updating 更新到数据库前触发 updated 更新到数据库后触发 saving 保存到数据库前触发(插入/更新之前,无论插入还是更新都会触发) saved 保存到数据库后触发(插入/更新之后,无论插入还是更新都会触发) deleti