gpt4 book ai didi

java - 当我使用这个线程代码时,我的应用程序崩溃了

转载 作者:行者123 更新时间:2023-11-30 01:43:40 25 4
gpt4 key购买 nike

我的目的很简单,我想创建一个从 10 到 1 的倒计时。我尝试使用 google 提供的倒计时,但我无法将其作为线程,所以我使用这种方式创建相同的功能但是我遇到了这个代码的问题。当我使用这个线程代码时,我的应用程序崩溃了。请帮助我。

public class MainActivity extends Activity { 
TextView textView;
Handler handler = new Handler(){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
String string = textView.getText().toString();
int num = Integer.parseInt(string);
num = num-1;
string = Integer.toString(num);
textView.setText(string);
}

};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Thread myThread = new Thread(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
for(int i = 10; i>0;i--){
try {
Thread.sleep(1000);
//handler.sendMessage(handler.obtainMessage());
handler.sendMessage(handler.obtainMessage());

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
});
myThread.start();

}



}

最佳答案

你的问题不在于线程,而在于这些行

String string = textView.getText().toString(); 
int num = Integer.parseInt(string);

您的 textView 可能以 XML 中的一些文本(“大文本”)开头。去掉它。 “大文本”不是数字,因此当您在原始字符串上调用 parseInt() 时,它会尝试将“大文本”转换为数字。

试试这个代码:

try {
String string = textView.getText().toString();
int num = Integer.parseInt(string);
textView.setText(String.valueOf(--num));
catch(NumberFormatException ignored){

}

使用 try/catch block

关于java - 当我使用这个线程代码时,我的应用程序崩溃了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com