package com.fukang.studyproject;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv_1;
Button btn_1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //页面布局为一个textview和一个button
tv_1 = (TextView) findViewById(R.id.tv_1);
btn_1 = (Button) findViewById(R.id.btn_1);
final Handler handler = new Handler() {//实例化一个Handler对象
@Override
public void handleMessage(Message msg) {//重写handleMessage方法
// TODO Auto-generated method stub
super.handleMessage(msg);
if (msg.what == 1) {//如果传入的参数msg.what == 1;
tv_1.setText("you click the button"); //改变textview中的文字
}
}
};
btn_1.setOnClickListener(new OnClickListener() { //为button设置点击监听器,点击该button时触发
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Message msg = new Message();//实例化Message对象
msg.what = 1;//给msg.what赋值1,用于测试
handler.handleMessage(msg);//使用刚才实例化的handler的handleMessage方法处理该msg
}
});
}
}
以我个人理解,在加载该activity时执行的oncreate方法中,首先需要实例化一个Handler类的对象handler,用于处理之后的Message对象;
该handler不能直接使用,需要重写handleMessage方法,在该方法中写入需要实现的业务逻辑代码,即改变textview的文本内容;
在button的点击事件监听器(btn.setOnClickListener())中,实例化Message消息类对象,并给msg.what 赋值 1,(该值用于测试),然后调用已经实例化的handler对象的handleMessage方法,并传入msg作为参数执行该方法。
扩展学习:添加Timer计时器类
只需在button的点击事件中实例化Timer()类,执行schedule方法,传入三个参数定时器任务TimerTask、操作延时毫秒数、执行周期毫秒数;
在TimerTask中重写run方法,在其中写入要在规定时间执行的操作即可;