今天做倒计时,原以为很简单,却出现各种问题,不说,直接上代码,错误在代码中有说明!!!
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; } } }