您的位置:首页 > 其它

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

2016-09-28 09:56 369 查看
今天做倒计时,原以为很简单,却出现各种问题,不说,直接上代码,错误在代码中有说明!!!

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;
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: