0

我的应用程序不断强制关闭。但是 Eclipse 没有显示错误或警告

package com.example.pkg;

import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;

public class subActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        Thread r = new Thread(new Runnable(){

                      public void run()
                      {   final TextView tv=(TextView)findViewById(R.id.rline1);
                          String s=(String)tv.getText();
                          tv.setText(s+"Works !");
                      }
        });
        r.start();
    }

}

另一个 Activity 调用这个 Activity。那个显示了 TextView。我想要做的就是更改正在显示在 TextView 上的名为 R.string.rline1 的字符串资源。如果有其他方法,请告诉我该怎么做

4

3 回答 3

0

您正在尝试tv.setText(s+"Works !");在线程中更新您的 UI(使用 )。你不能这样做。您必须在主线程中更新您的 UI。只需删除这个无用的线程:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
        TextView tv=(TextView)findViewById(R.id.rline1);
        String s=(String)tv.getText();
        tv.setText(s+"Works !");
    }

注意:Eclipse 不会显示错误,您必须打开您的 logcat(默认情况下在 Eclipse 的 DDMS 透视图中)。下次遇到问题时,请发布您的 logcat 错误。

于 2012-07-13T11:20:02.193 回答
0

替换下面的代码

     Thread r = new Thread(new Runnable(){

                  public void run()
                  {   **final TextView tv=(TextView)findViewById(R.id.rline1);
                      String s=(String)tv.getText();
                      tv.setText(s+"Works !");**
                  }
    });
    r.start();

final TextView tv=(TextView)findViewById(R.id.rline1);
                          String s=(String)tv.getText();
                          tv.setText(s+"Works !");
于 2012-07-13T11:22:16.583 回答
0

首先,您必须需要在 UI 线程中更新 GUI 内容,否则它将永远无法工作。第二件事,您知道创建文本视图实例并再次设置它的次数,您在线程内,并且您没有设置任何标志来停止您的线程一旦完成。例如对于 UI 线程:

        Runnable update_gui = new Runnable() {
            @Override
            public void run() {
              final TextView tv=(TextView)findViewById(R.id.rline1);
              String s=(String)tv.getText();
              tv.setText(s+"Works !");

            }
        };runOnUiThread(update_gui);
于 2012-07-13T11:25:32.447 回答