Java 当我使用此线程时,我的应用程序崩溃

Java 当我使用此线程时,我的应用程序崩溃,java,android,multithreading,button,android-studio,Java,Android,Multithreading,Button,Android Studio,我的目的很简单,我想创建一个从10到1的倒计时。我曾尝试使用谷歌提供的倒计时,但我无法将其作为一个线程,所以我用这种方法创建相同的函数,但我有一个问题,这个代码。我的应用程序在使用这个线程代码时崩溃。请帮助我 public class MainActivity extends Activity { TextView textView; Handler handler = new Handler(){ @Override public void handleMessage(Me

我的目的很简单,我想创建一个从10到1的倒计时。我曾尝试使用谷歌提供的倒计时,但我无法将其作为一个线程,所以我用这种方法创建相同的函数,但我有一个问题,这个代码。我的应用程序在使用这个线程代码时崩溃。请帮助我

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);
您可能有一个以XML中的一些文本(“大文本”)开始的textView。移除它。“大文本”不是一个数字,所以当您对原始字符串调用parseInt()时,它试图将“大文本”转换为一个数字

请尝试以下代码:

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

}

使用try/catch块

这是我的日志猫的链接,您应该将实际的日志猫消息粘贴到帖子中。不要在itok brother照片的评论中添加链接,在我获得10个声誉之后,你不需要任何特殊的代表金额就可以使用标签下方的编辑按钮,并像使用代码一样在你的帖子中复制/粘贴logcat输出。非常感谢你,兄弟,我爱你。你解决了我的问题!。任何时候都可以。很高兴你让它工作了。这是我不久前发现的一个很酷的小提示。。如果要查看预览中的文本,请立即将此命名空间添加到布局XML文件xmlns:tools=“”,而不是使用android:text=“Large text”使用tools:text=“Large text”设置实际文本值。当你构建你的应用程序时,它实际上没有价值,但它会显示在预览中。是的,这是一个很好的信息!我很感激,我试过了,效果很好。