一直总在关注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]