1

1 つのボタン スタートと 3 つの editText があります。スタートボタンを押すとタイマーがスタートし、ボタンテキストが Lap に変わり、時分秒が edittext1 に表示されます。Lap ボタンを押すと、editText1 の値が停止します。editText1 の 3 つの値はすべて、editText1 の停止位置で editText2 に表示されます。

ラップボタンのソースコードを教えてください。これまでのところ、次のコードがあります。

package com.example.timmerproject;

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class LapActivity extends Activity
{
    EditText ed1,ed2,ed3;
    Button btntimer;
    final Handler handler = new Handler();
    long startTime=0;
    Handler h2 = new Handler();

    Runnable run = new Runnable()
    {
        @Override
        public void run()
        {
            // TODO Auto-generated method stub
            long millis = System.currentTimeMillis() - startTime;
            int seconds = (int)(millis/1000);
            int hours =seconds/3600;
            int minutes = (seconds % 3600)/60;

            seconds = seconds % 60;
            ed1.setText(String.format("%02d:%02d:%02d", hours,minutes,seconds));
            h2.postDelayed(this, 500);
        }
    };

    class firstTask extends TimerTask
    {
        @Override
        public void run()
        {
            handler.sendEmptyMessage(0);
        }
    };

    class secondTask extends TimerTask
    {
        @Override
        public void run()
        {
            // TODO Auto-generated method stub
            LapActivity.this.runOnUiThread(new Runnable()
            {
                @Override
                public void run()
                {
                    // TODO Auto-generated method stub
                    long millis = System.currentTimeMillis() - startTime;
                    int seconds = (int)(millis/1000);
                    int hours =seconds/3600;
                    int minutes = (seconds % 3600)/60;

                    seconds = seconds % 60;
                    ed2.setText(String.format("%02d:%02d:%02d", hours,minutes,seconds));
                }
            });
        }
    }

    class thirdTask extends TimerTask
    {
        @Override
        public void run()
        {
            // TODO Auto-generated method stub
            LapActivity.this.runOnUiThread(new Runnable()
            {
                @Override
                public void run()
                {
                    // TODO Auto-generated method stub
                    long millis = System.currentTimeMillis() - startTime;
                    int seconds = (int)(millis/1000);
                    int hours =seconds/3600;
                    int minutes = (seconds % 3600)/60;

                    seconds = seconds % 60;
                    ed3.setText(String.format("%02d:%02d:%02d", hours,minutes,seconds));
                }
            });
        }           
    }

    Timer timer = new Timer();

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lap);
        ed1 = (EditText)findViewById(R.id.ed11);
        ed2 = (EditText)findViewById(R.id.ed12);
        ed3 = (EditText)findViewById(R.id.ed13);
        btntimer = (Button)findViewById(R.id.lapbutton);

        btntimer.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // TODO Auto-generated method stub
                Button btn = (Button)v;

                if(btn.getText().equals("Stop"))
                {
                    timer.cancel();
                    timer.purge();
                    h2.removeCallbacks(run);
                    btn.setText("Start");
                }
                else
                {
                    startTime = System.currentTimeMillis();
                    timer = new Timer();
                    timer.schedule(new firstTask(), 0,500);
                    timer.schedule(new secondTask(),  0,500);
                    timer.schedule(new thirdTask(),  0,500);
                    h2.postDelayed(run, 0);
                    btn.setText("Stop");       
                }   
            }   
        });
    }
}
4

0 に答える 0