一步一步学android之事件篇——单击事件

在使用软件的时候单击事件必不可少,比如我想确定、取消等都需要用户的单击,所有的单击事件都是由View.OnClickListener接口来进行处理的,接口定义如下:

public static interface View.OnClickListener{
		public void onClick(View v) {
		
		}
	}


下面同样写个例子来看下如何监听单击事件:

运行效果:


单击前的效果




单击后的效果

main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入信息...">
    </EditText>

    <Button
        android:id="@+id/bt_show"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="显示EditText里面的内容到下面的TextView中" />

    <TextView
        android:id="@+id/tv_show"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="我是用来显示EditText内容的TextView,点击上面的按钮我就能显示" />

</LinearLayout>

MainActivity.java:

package com.example.clickdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
	//定义三个用到的组件
	private Button bt_show;
	private EditText info;
	private TextView tv_show;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}
	//单独写个方法初始化组件
	private void initView(){
		//从xml中获取Button,xml中id的作用
		bt_show = (Button)super.findViewById(R.id.bt_show);
		//从xml中获取EditText
		tv_show = (TextView)super.findViewById(R.id.tv_show);
		//从xml中获取TextView
		info = (EditText)super.findViewById(R.id.info);
		
		//为Button按钮添加单击事件
		bt_show.setOnClickListener(new MyClickListener());
	}
	//定义监听处理程序
	private class MyClickListener implements OnClickListener{

		public void onClick(View v) {
			// TODO Auto-generated method stub
			//首先获取EditText中的内容
			String temp = info.getText().toString();
			//再把内容设置到TextView中
			tv_show.setText(temp);
		}
		
	}
	
}


第一次 使用findViewById()方法,说明一下这个方法的作用是取得在xml中的组件,如果没取组件就用会报空指针异常,然后是使用setOnClickListener()方法来为对按钮监听,这里是定义了一个内部类来实现OnClickListener接口,然后在OnClick方法中实现自己的逻辑(单击后要做的事情)。


上面的代码还可以修改为不使用内部类,毕竟我们只用一次,所以改成下面的使用匿名内部类的方法:

MainActivity.java:

package com.example.clickdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
	//定义三个用到的组件
	private Button bt_show;
	private EditText info;
	private TextView tv_show;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}
	//单独写个方法初始化组件
	private void initView(){
		//从xml中获取Button,xml中id的作用
		bt_show = (Button)super.findViewById(R.id.bt_show);
		//从xml中获取EditText
		tv_show = (TextView)super.findViewById(R.id.tv_show);
		//从xml中获取TextView
		info = (EditText)super.findViewById(R.id.info);
		
		//为Button按钮添加单击事件
		bt_show.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//首先获取EditText中的内容
				String temp = info.getText().toString();
				//再把内容设置到TextView中
				tv_show.setText(temp);
			}
		});
	}
}


效果是一样的,今天就说到这里了。

原文地址:https://www.cnblogs.com/keanuyaoo/p/3275726.html