我一直在"应用程序没有响应"在尝试实现CountDownTimer时。这就是我所拥有的:
private TextView mTextField;
private EditText secText;
private int secs;
private Button buttonStart, buttonStop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextField = (TextView) findViewById(R.id.textView1);
secText = (EditText) findViewById(R.id.segText);
buttonStart = (Button) findViewById(R.id.buttonStart);
buttonStop = (Button) findViewById(R.id.buttonStop);
secs = Integer.parseInt(secText.getText().toString());
final CountDownTimer count = new CountDownTimer((secs*1000), 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("Seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("FINISHED!");
}
};
问题在于它在尝试解析时使用此行,如果我输入了一个数字:
secs = Integer.parseInt(secText.getText().toString());
答案 0 :(得分:0)
在尝试从EditText
获取文本时,您需要处理所有案例。
EditText
为空,该怎么办?EditText
中的值不是整数,该怎么办? (“1bs25”,或“你好”)在尝试将值解析为Integer并启动计时器之前,您需要考虑这些事情并正确处理它们。
答案 1 :(得分:0)
确保您知道需要执行的操作顺序。这里有一些伪代码
if buttonstart_clicked
get text from sectext
if text is empty
show error
else if text is notANumber
show error
else
parse text AND start timer
您忘记了起点是按钮点击,而不是应用程序的开始,因为那时您的edittext仍然是空的。