使用用户定义的数字来创建倒数计时器

时间:2012-05-09 10:09:32

标签: android android-edittext countdowntimer

我们使用2个edittext,一个用于输入小时,一个用于输入分钟。


int CountM; 
int CountT;

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

    Mylabel = (EditText)findViewById(R.id.editText1);
    Hours = (EditText)findViewById(R.id.Timer);
    Minuttes = (EditText)findViewById(R.id.Minutter);


void StartTimer()
{
    int TotalT = ((CountT*60*60)+(CountM*60)*1000);

    mTextField = (TextView) findViewById(R.id.TimerTextView);
    CountDownTimer aCounter = new CountDownTimer(TotalT, 1000)
    {
         public void onTick(long millisUntilFinished) 
         {
             mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
         }
         public void onFinish() 
         {
             mTextField.setText("seconds remaining: " + CountM + CountT);
         }
    };
     aCounter.start();
}

正如您所看到的,我们需要从Edittext Hours into CountTMinutes into CountM收集{{1}}的数据并将这些结果吐出来,将其缩短到几秒钟,以便我们可以将其设置为任务5小时后。 我们已尝试使用字符串并将其转换为Ints。 有什么建议?

2 个答案:

答案 0 :(得分:0)

有一件事:

((CountT * 60 * 60)+(COUNT分钟* 60)* 1000); //稍微展开一下:

((CountT * 60 * 60)+(CountM * 60)* 1000); // hours / CountT不能乘以1000

如果对运算符优先级有任何疑问,请使用额外的括号 如果对运算符优先级毫无疑问,请使用额外的括号。

调试101技巧#34 - 将复杂的表达式分解为更简单的表达式,这些表达式加载单独的本地变量,以便在调试器中可以轻松看到精确的操作序列。如果你写了:

int minsTicks=CountM*60*1000;
int hoursTicks=CountT*60*60;
int totalTicks=hoursTicks+minsTicks;

你会直接看到这个问题,事实上,你可能不会在第一时间做到这一点!

答案 1 :(得分:0)

假设您的布局中有Button,点击哪个,您需要启动计时器,相同的代码将是:

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

    Mylabel = (EditText)findViewById(R.id.editText1);
    Hours = (EditText)findViewById(R.id.Timer);
    Minuttes = (EditText)findViewById(R.id.Minutter);
    startBtn = (Button)findViewById(R.id.startBtn);
    startBtn.setOnClickListener(new View.OnClickListener() {        
         @Override
         public void onClick(View v) {
             try{
                 String hourStr = Hours.getText().toString();
                 CountT = Integer.parseInt(hourStr);
                 String minuteStr = Minuttes.getText().toString();
                 CountM = Integer.parseInt(minuteStr);
                 StartTimer();
             }catch(NumberFormatException ex){
                 ex.printStackTrace();
             }
         }
    });
}

建议:当您还在学习时,理解并遵循Java Code Conventions

是个不错的主意。