Android 倒计时问题

Android 倒计时问题,android,timer,countdown,Android,Timer,Countdown,我正在使用一个倒计时计时器,并将其设置为可以由用户设置。当计时器到达00:00时,它应该说“完成!”。由于某种原因,我在启动计时器后马上“完成”了。在点击暂停和恢复后,它显示我的计数器正在倒计时,但我不确定客户是否会对此感到满意。有人能告诉我为什么会有这个问题吗?谢谢 package score.keeper.basketball; import android.app.Activity; import android.app.Dialog; import android.os

我正在使用一个倒计时计时器,并将其设置为可以由用户设置。当计时器到达00:00时,它应该说“完成!”。由于某种原因,我在启动计时器后马上“完成”了。在点击暂停和恢复后,它显示我的计数器正在倒计时,但我不确定客户是否会对此感到满意。有人能告诉我为什么会有这个问题吗?谢谢

        package score.keeper.basketball;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;

public class Score extends Activity implements AdapterView.OnItemSelectedListener {

    private Button Button01;
    private Button Button02;
    private Button Button03;
    private Button Button04;
    private TextView TextView01;
    private TextView TextView02;
    private TextView TextView03;
    private TextView TextView06;
    private Spinner Spinner01;
    private Spinner Spinner02;

    private TextView Team01;
    private TextView Team02;

    TextView timeDisplay;
    int state = 0;
    int length;
    long startTime = 0;
    long currentTime = 0;
    long timeElapsed = 0;
    long timeRemaining = 0;
    long prevTimeRemaining = 0;
    Button control;
    MyCount counter;

    String[] goal={"Three", "Foul", "Two"};


    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);


        Button01 = (Button) findViewById(R.id.Button01);
        Button02 = (Button) findViewById(R.id.Button02);
        Button03 = (Button) findViewById(R.id.Button03);
        Button04 = (Button) findViewById(R.id.Button04);

        TextView01 = (TextView) findViewById(R.id.TextView01);
        TextView02 = (TextView) findViewById(R.id.TextView02);
        TextView03 = (TextView) findViewById(R.id.TextView03);
        TextView06 = (TextView) findViewById(R.id.TextView06);
        Team01 = (TextView) findViewById(R.id.TextView04);
        Team02 = (TextView) findViewById(R.id.TextView05);

        Team01.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                    final Dialog dialog = new Dialog(Score.this);
                    dialog.setContentView(R.layout.setteamname);
                    dialog.setTitle("Team Name");
                    dialog.setCancelable(true);

                    final EditText teamName = (EditText) dialog.findViewById(R.id.teamName);

                    Button btn = (Button) dialog.findViewById(R.id.setText);
                    btn.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {

                            String teamName2 = teamName.getText().toString();

                            Team01.setText("" + teamName2);

                            dialog.dismiss();
                                    }
                        });     
                    dialog.show();
            }});

        Team02.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                final Dialog dialog = new Dialog(Score.this);
                dialog.setContentView(R.layout.setteamname);
                dialog.setTitle("Team Name");
                dialog.setCancelable(true);

                final EditText teamName = (EditText) dialog.findViewById(R.id.teamName);

                Button btn = (Button) dialog.findViewById(R.id.setText);
                btn.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        String teamName3 = teamName.getText().toString();

                        Team02.setText("" + teamName3);

                        dialog.dismiss();
                                }
                    });     
                dialog.show();
        }});

        Spinner spin = (Spinner) findViewById(R.id.Spinner01);
        spin.setOnItemSelectedListener((OnItemSelectedListener) this);

        ArrayAdapter<String> aa=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, goal);

        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(aa);


        Button01.setOnLongClickListener(subtractLeft);
        Button02.setOnClickListener(new Button.OnClickListener() {public void onClick(View v){my_func1();}});
        Button03.setOnLongClickListener(subtractRight);
        Button04.setOnClickListener(new Button.OnClickListener() {public void onClick(View v){my_func2();}});

        timeDisplay = (TextView) findViewById(R.id.timer);

        timeDisplay.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                final Dialog dialog = new Dialog(Score.this);
                dialog.setContentView(R.layout.custom_dialog);
                dialog.setTitle("Set Time");
                dialog.setCancelable(true);

                final EditText min = (EditText) dialog.findViewById(R.id.min);

                final EditText sec = (EditText) dialog.findViewById(R.id.sec);

                Button btn = (Button)dialog.findViewById(R.id.positive);
                btn.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v){

                        int min2 = Integer.parseInt(min.getText().toString());
                        int sec2 = Integer.parseInt(sec.getText().toString());

                        {length = (((min2 * 60) + sec2) * 1000);

                        dialog.dismiss();}

                    }});


                dialog.show();} 

                });
        counter = new MyCount(length, 100); 
        control = (Button) findViewById(R.id.control);

      }

      public void control(View view) {
        switch (state) {
        case 0:
          startTime = System.currentTimeMillis();
          counter.start();
          control.setText(R.string.pause);
          state = 1;
          break;
        case 1:
          // pause
          currentTime = System.currentTimeMillis();
          timeElapsed = currentTime - startTime;

          if (prevTimeRemaining == 0)
            timeRemaining = length - timeElapsed;
          else
            timeRemaining = prevTimeRemaining - timeElapsed;
          counter.cancel();
          timeDisplay.setText(formatTime(timeRemaining));
          control.setText(R.string.resume);
          prevTimeRemaining = timeRemaining;

          // resume
          counter = new MyCount(timeRemaining, 100);
          state = 0;
          break;
        case 2:
          prevTimeRemaining = 0;
          counter = new MyCount(length, 100);
          control.setText(R.string.start);
          timeDisplay.setText(R.string.timer);
          state = 0;
        }
      }

      public class MyCount extends CountDownTimer {

        public MyCount(long millisInFuture, long countDownInterval) {
          super(millisInFuture, countDownInterval);
        }

        public void onFinish() {
          timeDisplay.setText("done!");
          state = 2;
          control.setText(R.string.restart);
        }

        public void onTick(long millisUntilFinished) {
          timeDisplay.setText(formatTime(millisUntilFinished));
        }
      }




      public String formatTime(long millis) {
          String output = "00:00";
          long seconds = millis / 1000;
          long minutes = seconds / 60;
          // long hours = minutes / 60;

          seconds = seconds % 60;
          minutes = minutes % 60;
          // hours = hours % 60;

          String secondsD = String.valueOf(seconds);
          String minutesD = String.valueOf(minutes);
          // String hoursD = String.valueOf(hours); 

          if (seconds < 10)
            secondsD = "0" + seconds;
          if (minutes < 10)
            minutesD = "0" + minutes;
          // if (hours < 10)
            // hoursD = "0" + hours;

          output = minutesD + " : " + secondsD;
          return output;
        }



    public void setSpinner02(Spinner spinner02) {
        Spinner02 = spinner02;
    }

    public Spinner getSpinner02() {
        return Spinner02;
    }

    public void setSpinner01(Spinner spinner01) {
        Spinner01 = spinner01;
    }

    public Spinner getSpinner01() {
        return Spinner01;
    }

    public void onItemSelected(AdapterView<?> parent, View v, int position, long id)
    {
    if ("Three".equals(goal[position]))
    {TextView03.setText("3");}

    if ("Foul".equals(goal[position]))
    {TextView03.setText("1");}

    if ("Two".equals(goal[position]))
    {TextView03.setText("2");}

    }

    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
        TextView03.setText("2");
        TextView06.setText("2");

    }


    void my_func1() {
        int scoreLeft; 
        int addOne;
        int scoreLeftTotal;

        addOne = Integer.parseInt(TextView03.getText().toString());
        scoreLeft = Integer.parseInt(TextView01.getText().toString());

        scoreLeftTotal = (scoreLeft + addOne);

        TextView01.setText("" + scoreLeftTotal);
        }


   void my_func2() {
            int scoreRight = Integer.parseInt(TextView02.getText().toString());
            int addOne = Integer.parseInt(TextView03.getText().toString());

            {int scoreRightTotal = (scoreRight + addOne);

            TextView02.setText("" + scoreRightTotal);
            }

    }
    private OnLongClickListener subtractLeft = new OnLongClickListener() { 
        public boolean onLongClick(View v) {
        int scoreLeft = Integer.parseInt(TextView01.getText().toString());
        int addOne = Integer.parseInt(TextView03.getText().toString());

        {int scoreLeftTotal = (scoreLeft - addOne);

        TextView01.setText("" + scoreLeftTotal);
        }

        return true; 
        }
};
private OnLongClickListener subtractRight = new OnLongClickListener() { 
    public boolean onLongClick(View v) {
    int scoreRight = Integer.parseInt(TextView02.getText().toString());
    int addOne = Integer.parseInt(TextView03.getText().toString());

    {int scoreLeftTotal = (scoreRight - addOne);

    TextView02.setText("" + scoreLeftTotal);
    }

    return true; 
    }
};

public void OnClick(View view) {
    if (view==Team01){
        Dialog dialog = new Dialog(Score.this);
        dialog.setContentView(R.layout.setteamname);
        dialog.setTitle("Team Name");
        dialog.setCancelable(true);

        final EditText teamName = (EditText) dialog.findViewById(R.id.teamName);

        teamName.setText(R.id.TextView04);

        Button btn = (Button)dialog.findViewById(R.id.setText);
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                teamName.getText().toString();

                Team01.setText("" + teamName);

                }

            });

        dialog.show();} 

        };

}
package score.keeper.basketball;
导入android.app.Activity;
导入android.app.Dialog;
导入android.os.Bundle;
导入android.os.CountDownTimer;
导入android.view.view;
导入android.view.view.OnLongClickListener;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.AdapterView.OnItemSelectedListener;
公共类分数扩展活动实现AdapterView.OnItemSelectedListener{
私人按钮01;
私人按钮02;
私人按钮03;
私人按钮04;
私有文本视图文本视图01;
私有文本视图文本视图02;
私有文本视图文本视图03;
私有文本视图文本视图06;
私人纺纱机纺纱机01;
私人纺纱机纺纱机02;
私有文本视图Team01;
私有文本视图Team02;
文本视图时间显示;
int state=0;
整数长度;
长起始时间=0;
长电流时间=0;
长时间运行=0;
长时间剩余=0;
长时间剩余=0;
按钮控制;
计数计数器;
String[]goal={“三”,“犯规”,“两”};
@凌驾
创建公共空间(捆绑冰柱){
超级冰柱;
setContentView(R.layout.main);
Button01=(按钮)findViewById(R.id.Button01);
Button02=(按钮)findViewById(R.id.Button02);
Button03=(按钮)findViewById(R.id.Button03);
Button04=(按钮)findViewById(R.id.Button04);
TextView01=(TextView)findViewById(R.id.TextView01);
TextView02=(TextView)findViewById(R.id.TextView02);
TextView03=(TextView)findViewById(R.id.TextView03);
TextView06=(TextView)findViewById(R.id.TextView06);
Team01=(TextView)findViewById(R.id.TextView04);
Team02=(TextView)findViewById(R.id.TextView05);
Team01.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
最终对话框=新对话框(分数。此);
setContentView(R.layout.settamName);
dialog.setTitle(“团队名称”);
对话框。可设置可取消(true);
final EditText teamName=(EditText)dialog.findViewById(R.id.teamName);
按钮btn=(按钮)dialog.findViewById(R.id.setText);
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串teamName2=teamName.getText().toString();
Team01.setText(“+teamName2”);
dialog.dismise();
}
});     
dialog.show();
}});
Team02.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
最终对话框=新对话框(分数。此);
setContentView(R.layout.settamName);
dialog.setTitle(“团队名称”);
对话框。可设置可取消(true);
final EditText teamName=(EditText)dialog.findViewById(R.id.teamName);
按钮btn=(按钮)dialog.findViewById(R.id.setText);
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串teamName3=teamName.getText().toString();
Team02.setText(“+teamName3”);
dialog.dismise();
}
});     
dialog.show();
}});
微调器旋转=(微调器)findViewById(R.id.Spinner01);
spin.setOnItemSelectedListener((OnItemSelectedListener)this);
ArrayAdapter aa=新的ArrayAdapter(这是android.R.layout.simple\u微调器项目,目标);
aa.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转适配器(aa);
按钮01.setOnLongClickListener(左减);
Button02.setOnClickListener(新建Button.OnClickListener(){public void onClick(视图v){my_func1();}});
按钮03.setOnLongClickListener(右键);
Button04.setOnClickListener(新建Button.OnClickListener(){public void onClick(视图v){my_func2();}});
TIME DISPLAY=(TextView)FindView(R.id.timer);
timeDisplay.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图){
最终对话框=新对话框(分数。此);
setContentView(R.layout.custom_对话框);
对话框。设置标题(“设置时间”);
对话框。可设置可取消(true);
final EditText min=(EditText)dialog.findViewById(R.id.min);
final EditText sec=(EditText)dialog.findViewById(R.id.sec);
按钮btn=(按钮)dialog.findViewById(R.id.positive);
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
int min2=Integer.parseInt(min.getText().toString());
int sec2=Integer.parseInt(sec.getText().toString());
{length=((min2*60)+sec2)*1000);
dialog.dismis