timer+TimerTask+handler倒计时-----小例子深奥多

今天做倒计时,原以为很简单,却出现各种问题,不说,直接上代码,错误在代码中有说明!!!

package com.example.daojishi;


import java.util.Timer;
import java.util.TimerTask;


import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
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 implements OnClickListener{
Button start,get,stop;
TextView show;
EditText setting;
int i=0;
Timer timer=new Timer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitView();

}
public void InitView()
{
start=(Button) findViewById(R.id.startGet);
get=(Button) findViewById(R.id.getTime);
stop=(Button) findViewById(R.id.stop);
show=(TextView) findViewById(R.id.show);
setting=(EditText) findViewById(R.id.setting);
start.setOnClickListener(this);
get.setOnClickListener(this);
stop.setOnClickListener(this);
}




Handler mhandler=new Handler(){


@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
//android.content.res.Resources$NotFoundException: String resource ID #0x1
//show.setText(msg.arg1);报错,因为msg.arg1是int,而,settext中是String


show.setText(msg.arg1+"");




}
};
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.getTime:
String time=setting.getText().toString();
show.setText(time);
i=Integer.parseInt(show.getText().toString());


break;
case R.id.startGet:

TimerTask task=new TimerTask() {

@Override
public void run() {
// TODO Auto-generated method stub
i=Integer.parseInt(show.getText().toString());
i--;

Message mess=mhandler.obtainMessage();
mess.arg1=i;


mhandler.sendMessage(mess);

}

};
// 如果倒计时schedule后面是两个参数,则只能计时一次,!!!!必须手动倒计时

//第三个参数是表示按1000毫秒倒计时,中间的参数,我感觉没意义,但是如果没有就不能自动倒计时
timer.schedule(task,0,1000);
break;
case  R.id.stop:
// 取消倒计时
timer.cancel();
break;
}
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值