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;
}
}
}
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;
}
}
}
相关文章推荐
- 倒计时五种方法,方法二:TimerTask与Handler(不用Timer的改进型)
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Android简易实战教程--第四十八话《Android - Timer、TimerTask和Handler实现倒计时》
- Android 定时任务之Timer和Handler实现倒计时效果(附:adapter列表倒计时)
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- Android按钮屏蔽计时器(handler+TimerTask)
- [Android]一个简单使用Handler做Timer的例子
- 定时器实现:Handler+Timer+TimerTask
- Android_非UI:倒计时 Handler + Timer + CounDownTimer
- Handler和Timer实现倒计时跳转页面
- Android----------Handler和Timer实现倒计时
- Android项目开发实战—倒计时[Handler,Timer,TimerTask,Message]
- 进阶_计时器(Handler+TimerTask实现)_150503
- Timer搭配TimerTask与Handler使用(更新UI)
- Android实现调度任务的三种方式:TimerTask、ScheduledExecutorService、Handler
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- 倒计时功能CountDownTimer PK Handler
- Java 中Timer和TimerTask 定时器和定时任务使用的例子
- 倒计时 Timer和handler
- Android中倒计时项目(handler和timer)