正文
一步一步学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);
}
});
}
}
效果是一样的,今天就说到这里了。