[原创]Android开发笔记1:Button的Click事件

一直总在关注Android的开发,可是一直都没真正动手实践过,于是从今天起每天进步一点儿,开始动手开发Android应用,也让我的小8(x876)能够有用武之地,废话不多说了,开始吧。

需求:想实现点击按钮改变EditText的值

实现步骤:

1.添加一个EditText到main.xml界面

2.添加一个Button到main.xml界面

3.编辑src下的java文件

注意:java的事件机制是需要给Button的setOnClickListener,自定义一个实现OnClickListener接口的类,并实现onClick方法,onClick方法传入的参数View v是触发事件的视图对象,比如button点击触发传递过来的就是这个点击的button实例,这样可以根据传递的button对象来进行不同的操作,没必要每个button都定义一个Listener类

界面代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Gallery android:id="@+id/gallery1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Gallery>
<EditText android:layout_width="fill_parent" android:id="@+id/editText1" android:layout_height="wrap_content" android:text="EditText"></EditText>
<LinearLayout android:layout_width="fill_parent" android:id="@+id/linearLayout1" android:layout_height="wrap_content">
    <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
</LinearLayout>

实现代码:

package com.kiwing.hello;

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;

public class kiwing extends Activity {
EditText edtInput;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnShow=(Button)findViewById(R.id.button1);
btnShow.setOnClickListener(new ClickListener());//实现方法1,调用Activity内自定义的Listener
edtInput=(EditText)findViewById(R.id.editText1);//获取全局的EditText组件,便于Listener使用

}
//Activity类内的事件监听器
class ClickListener implements OnClickListener {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
edtInput.setText("Hello");//调用全局变量显示内容
//不利用全局变量直接获取EditText组件
//((EditText)findViewById(R.id.editText1)).setText("Hello");
}
}
}

也可以将Listener定义在独立的文件中,不过需要传递当前的Acitivity给Listener,用于获取其他组件,独立的Listener的代码如下:

package com.kiwing.hello;

import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;

public class ClickLister implements OnClickListener {

	Activity kiwing;
	public Activity getKiwing() {
		return kiwing;
	}
	public void setKiwing(Activity kiwing) {
		this.kiwing = kiwing;
	}
	
	public ClickLister(Activity kiwing) {
		super();
		this.kiwing = kiwing;
	}
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub		
		((EditText)kiwing.findViewById(R.id.editText1)).setText("Hello!");
	}

}

调用代码如下:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btnShow=(Button)findViewById(R.id.button1);
        btnShow.setOnClickListener(new ClickLister(this));//这里需要传递Activity给Listener类
        edtInput=(EditText)findViewById(R.id.editText1);
       
    }

[/java]

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏