0

我们使用 2 个编辑文本,一个用于输入小时,一个用于输入分钟。


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();
}

如您所见,我们需要从我们的Edittextfrom中收集数据Hours into CountT并将Minutes into CountM这些结果输出,将其缩短到几秒钟,以便我们可以将其设置为 5 小时后执行任务。我们尝试过使用字符串并将它们转换为 Ints。有什么建议么?

4

2 回答 2

0

一件事:

((计数T*60*60)+(计数M*60)*1000); // 稍微扩展一下:

((计数T*60*60)+(计数M*60)*1000);// hours/CountT 不乘以 1000

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

调试 101 技巧 #34 - 将复杂的表达式分解为更简单的表达式,这些表达式加载单独的局部变量,以便在调试器中轻松查看确切的操作顺序。如果你写过:

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

您会立即看到问题,事实上,您可能一开始就不会成功!

于 2012-05-09T10:22:04.900 回答
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 代码约定

于 2012-05-09T10:31:05.447 回答