Android 点击事件 4种 写法

Android中点击事件的4种写法


使用匿名内部类方式

xml 文件
<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context="com.dodi.myapplication.MainActivity">

    <Button
        android:id="@+id/btn_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="方式1"/>

</LinearLayout>
Java代码
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //第一种方式: 使用匿名内部类方式
        Button btn_1 = (Button)findViewById(R.id.btn_1);
        btn_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast tst = Toast.makeText(MainActivity.this, "匿名内部类方式设置点击事件", Toast.LENGTH_SHORT);
                tst.show();
            }
        });
    }
}

使用自定义单击事件监听类实现

xml 文件
<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context="com.vanm.button.MainActivity">

    <Button
        android:id="@+id/btn_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮1"/>

    <Button
        android:id="@+id/btn_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮2"/>
</LinearLayout>
Java代码
 public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //第二种方式: 使用自定义单击事件监听类实现
        Button btn_1 = (Button) findViewById(R.id.btn_1);
        Button btn_2 = (Button) findViewById(R.id.btn_2);

        btn_1.setOnClickListener(new MyClickListener());
        btn_2.setOnClickListener(new MyClickListener());
    }

    //自定义单击事件的监听类
    class MyClickListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {

            //多个按钮的点击事件通过Switch语句区分开
            switch (v.getId()) {
                case R.id.btn_1:
                    Toast.makeText(MainActivity.this, "使用自定义单击事件监听类实现", Toast.LENGTH_SHORT).show();
                    break;
                case R.id.btn_2:
                    Toast.makeText(MainActivity.this, "使用自定义单击事件监听类实现", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
        }
    }
}

Activity实现点击事件

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"
    tools:context="com.vanm.button.MainActivity">

    <Button
        android:id="@+id/btn_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="方式3"/>

</RelativeLayout>
Java代码
//Activity实现View.OnClickListener方法,去处理点击事件
public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn_3 = (Button) findViewById(R.id.btn_3);

        //第三种方式: Activity实现点击事件-->传入this即可
        btn_3.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        //多个按钮的点击事件通过Switch语句区分开
        switch (v.getId()) {
            case R.id.btn_3:
                Toast.makeText(MainActivity.this, "Activity实现点击事件实现", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}

使用xml属性android:onClick进行设置

xml 文件
<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context="com.vanm.xmlonclick.MainActivity">

    <!--android:onClick="btnOnClick"
        给按钮指定一个点击事件
        值可以自定义,并且这个值将作为点击事件方法的方法名
    -->
    <Button
        android:id="@+id/btn_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="btnOnClick"
        android:text="按钮1"/>

    <!-- 可以多个按钮指定为一个方法名,通过Switch语句区分不同的按钮-->
    <Button
        android:id="@+id/btn_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="btnOnClick"
        android:text="按钮2"/>
</LinearLayout>
Java代码
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /**
     * 第4中方式: 通过XMl给指定按钮定义的点击事件,
     *           不需要调用setOnClickListener方法,不需要findViewById
     * 注意 这里没有 @Override 标签
     * 固定写法: 修饰符:      public  公共的
     *         返回值类型:    void    无返回值
     *         方法名:       在XML的onclick属性中设置的值
     *         形式参数:      View类型
     * @param v : 当前点击的Button
     */
    public void btnOnClick(View v){
        /*通过不同的Id区分不同的按钮*/
        switch (v.getId()){
            case R.id.btn_1:
                Toast.makeText(MainActivity.this, "通过XMl给指定按钮定义的点击事件", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_2:
                Toast.makeText(MainActivity.this, "通过XMl给指定按钮定义的点击事件", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值