0

我有一个有效的倒计时,但它只从我输入的硬编码整数开始倒计时。我希望用户能够输入一个数字并让它从那个数字开始倒计时。我希望将放入“timeedit”的文本放入字符串并放入“startTime”的值。

编辑:如果下面的代码在您的屏幕上没有正确缩进,您也可以在此处查看代码:http: //pastebin.com/BnzEtFX5

代码:

public class TimerActivity extends Activity implements OnClickListener {

    private CountDownTimer countDownTimer;
    private boolean timerHasStarted = false;
    private Button startB;
    public TextView text;
    public String time;
    private long startTime = 30 * 1000;
    private final long interval = 1 * 1000;
    private EditText timeedit;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_countdown);
        startB = (Button) this.findViewById(R.id.button);
        startB.setOnClickListener(this);
        text = (TextView) this.findViewById(R.id.timer);
        timeedit = (EditText) findViewById(R.id.timeedit);
        countDownTimer = new MyCountDownTimer(startTime, interval);
        time = timeedit.getText().toString();
        text.setText(time); //+ String.valueOf(startTime/1000)
    }

    @Override
    public void onClick(View v) {
        if (!timerHasStarted) {
            countDownTimer.start();
            timerHasStarted = true;
            startB.setText("STOP");
        } else {
            countDownTimer.cancel();
            timerHasStarted = false;
            startTime = 30 * 1000;
            startB.setText("RESTART");
        }
    }


    public class MyCountDownTimer extends CountDownTimer {
        public MyCountDownTimer(long startTime, long interval) {
            super(startTime, interval);
        }

        @Override
        public void onFinish() {
            text.setText("Time's up!");
        }

        @Override
        public void onTick(long millisUntilFinished) {
            text.setText("" + millisUntilFinished / 1000);
        }
    }
}
4

2 回答 2

1

嗯......我不确定问题是什么,但如果我理解正确,你只需要在onCreate()

String userTime = timeedit.getText().toString();
startTime = Long.parseLong(userTime);

编辑

您实际上会想要将startTimeanduserTime放入您的onClick. 如果它在,onCreate()那么EditText除非您在 xml 中输入默认值,否则您将是空的,但无论哪种方式,它都不是用户输入的内容。try/catch如果用户输入的不是数字字符,您还需要用 a括起来。

 public void onClick(View v) {
    String userTime = timeedit.getText().toString();
    long startTime = Long.parseLong(userTime);
    if (!timerHasStarted) {
        countDownTimer.start();
        timerHasStarted = true;
        startB.setText("STOP")
于 2013-05-27T03:17:26.697 回答
0

如果你想让用户做一些输入,你只需要得到这个:

    String userCountDown = timeEdit.getText().toString();

然后将其解析为 Long:

    long userStartTime = Long.parseLong(userCountDown);

然后,将其传递给 countDown

    countDownTimer = new MyCountDownTimer(UserStartTime, interval);

但是您必须确保 timeEdit 中的值是 Long 值。通过将您的 layout.xml 文件中的属性 inputType="number" 设置为 R.id.timeedit,您可以确保获得一个 Long。但要非常确定有输入,您可以进行任何检查并向用户显示警告。

        if (!timerHasStarted) { 
              String userCountDown = timeEdit.getText().toString();
             if(userCountDown.length()<1){

                Toast.makeText(yourActivity.this,"PLEASE DO SOME INPUT",Toast.LENGTH_LONG).show();
              }else{
                 long userStartTime = Long.parseLong(userCountDown);
                    countDownTimer = new MyCountDownTimer(userStartTime, interval);
                countDownTimer.start();
              timerHasStarted = true;
              startB.setText("STOP");
            }
       } else {

             countDownTimer.cancel();
             timerHasStarted = false;
              startTime = 30*1000;
              startB.setText("RESTART");
         }
于 2013-05-27T03:26:50.097 回答