Android开发中4种Onclick事件的实现

来源:互联网 发布:阿里云账号 编辑:程序博客网 时间:2024/05/20 15:56

首先要使用一个Button和一个TextView便于测试和分析下面是布局文件代码:

<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.android.onclick.MainActivity$PlaceholderFragment" >    <TextView        android:id="@+id/tvtext"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/text" />    <Button         android:id="@+id/btntest"        android:onClick="testBtnOnClick"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/tvtext"        android:text="@string/test"/></RelativeLayout>

布局文件写好后显示的效果


第1种:在布局文件里面绑定一个点击事件的方法(这是一个很好用的方法)

import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {//获取控件private TextView tvtext;private Button btntest;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btntest=(Button)findViewById(R.id.btntest);}//方法名要与布局页面中方法名相同public void testBtnOnClick(View view){TextView textview = (TextView)findViewById(R.id.tvtext);    textview.setText("你点击了测试按钮"); }}

第1种测试结果如下:


第2种:创建一个内部类定义点击事件(当然要把布局文件里的Onclick事件去掉,否则会因为你没有方法而报错)

import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {//获取控件private TextView tvtext;private Button btntest;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btntest=(Button)findViewById(R.id.btntest);//给按钮注册点击事件 ,创建一个内部类定义点击事件btntest.setOnClickListener(new MyListener());}private class MyListener  implements OnClickListener{@Overridepublic void onClick(View v){TextView textview = (TextView)findViewById(R.id.tvtext);textview.setText("恭喜触发成功"); }}}
第2种测试结果如下:


第3种:采用匿名内部类创建点击事件(这种用法用的不是很多)

import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {//获取控件private TextView tvtext;private Button btntest;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btntest=(Button)findViewById(R.id.btntest);//采用匿名内部类创建点击事件btntest.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubTextView textview = (TextView)findViewById(R.id.tvtext);textview.setText("触发成功咯!"); }});}}
第3种测试结果如下:


第4种:让activity实现点击事件接口(这个也是最常用的方法)

import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener {//获取控件private TextView tvtext;private Button btntest;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btntest=(Button)findViewById(R.id.btntest);//让activity实现点击事件接口btntest.setOnClickListener(this);}//接口里面未实现的方法@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.btntest:TextView textview = (TextView)findViewById(R.id.tvtext);textview.setText("成功触发"); break;}}}

第4种测试结果如下:



0 0