以下のandroidのプログラムで
リセットボタンを押すと
00:00:00と表示するようにしたいのですが
00:00:06とか
00:00:08などの表示になってしまいます。
解決法を教えていただけないでしょうか?
*ストップボタンを追加して
ストップボタンを押した後、リセットボタンを押す
というのは無しで、お願いします。
開発環境:win7
eclipse
Version: Luna Service Release 2 (4.4.2)
エミュレータで確認しました。
実機では未確認です。
宜しくお願いします。
public class StopWatch extends Activity { /** Called when the activity is first created. */ boolean p = false; public static int m = 0; public static int s = 0; public static int ms = 0; String m0="0"; String s0="0"; String ms0="0"; private Button startbtn;//スタートボタン private Button resetbtn;//リセットボタン Timer timer = null; //タイマを定義 TextView mDisplayText; //表示領域 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //結果の表示先 mDisplayText = (TextView)findViewById(R.id.TextView01); startbtn = (Button)findViewById(R.id.Button01); resetbtn = (Button)findViewById(R.id.Button03); //スタートボタンクリック startbtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if(p==false){ //Timerを設定する timer = new Timer(true); final android.os.Handler handler = new android.os.Handler(); timer.schedule( new TimerTask() { @Override public void run() { handler.post( new Runnable(){ public void run(){ ms++; if(ms==100){s=s+1; ms=0; ms0="0";} if(s==60){m=m+1; s=0; s0="0"; ms0="0";} if(m==60){s0="0"; ms0="0";} if(ms>=10){ms0="";} if(s>=10){s0="";} if(m>=10){m0="";} mDisplayText.setText(m0+m+":"+s0+s+":"+ms0+ms); } }); } }, 10, 10); //初回起動の遅延と周期指定。単位はms p=true; } } }); // リセットボタンクリック resetbtn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if(p==true && timer != null){ timer.cancel(); timer = null; //カウント値の初期化 m0="0"; s0="0"; ms0="0"; m = 0; s = 0; ms = 0; p=false; mDisplayText.setText("00:00:00"); } } }); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/21 23:26