使用静态方法在textView中设置文本

时间:2014-07-20 23:26:06

标签: android static textview settext

问候,

我想从我的线程更新我的应用程序中的文本以显示在我的活动中。

我知道如何从线程类(在活动中调用)更新活动的唯一方法是创建一个从线程调用的静态方法,如下所示:

Global.score++; //Global class with a score variable
Start.show(); //Start is the caller class 

并执行如下:

tvScore.setText(String.ValueOf(Global.score));                

并且将tvScore的修饰符更改为static

唯一的问题是这个代码崩溃了我的应用程序,我想知道是否有其他方式可以在线程上发生某些事情时在我的活动中显示分数。

谢谢!

编辑 - LOGCAT SHOW
不确定这会有所帮助,但这里是logcat

07-21 02:15:10.215: E/AndroidRuntime(27608): FATAL EXCEPTION: Thread-91
07-21 02:15:10.215: E/AndroidRuntime(27608): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4039)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:709)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.view.View.requestLayout(View.java:12675)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.view.View.requestLayout(View.java:12675)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.view.View.requestLayout(View.java:12675)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.view.View.requestLayout(View.java:12675)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.view.View.requestLayout(View.java:12675) 
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.widget.TextView.checkForRelayout(TextView.java:6773)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.widget.TextView.setText(TextView.java:3306)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.widget.TextView.setText(TextView.java:3162)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at android.widget.TextView.setText(TextView.java:3137)
07-21 02:15:10.215: E/AndroidRuntime(27608):    at com.example.fishtruck.Start.showLives(Start.java:123)

1 个答案:

答案 0 :(得分:0)

这就是我如何解决从帖子中发布/更新文本的问题:

this.post(new Runnable() {

            @Override
            public void run() {
               textView.setText("something");
            }
        });

此代码位于调用线程的自定义SurfaceView中。而textView只是从Activity类传递的引用。