提问者:小点点

刷新线程中的editText


我做了这段代码,我需要在屏幕上实时显示一些值,所以,我试着这样做,有人知道是怎么回事吗?

public class Test extends AppCompatActivity {

    TextView lastValue;
    int i = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        lastValue = (TextView) findViewById(R.id.textViewID);
        Thread t = new Thread(new Runnable() { 

            @Override
            public void run() {
                while(i<90000) {
                    i++;
                    lastValue.setText(String.valueOf(i));

                }
        }});       t.start();

    }
}

安卓显示器:

java.lang.NullPointerException:尝试在Android.Widget.TextView.OnMeasure(TextView.java:7520)的Android.View.View.Measure(View.java:19917)的Android.View.View.Measure(View.java:19917)的Android.Widget.LinearLayout.MeasureChildWithMargins(ViewGroup.MeasureChildBeforelayout(LinearLayout.java:1485)的在Android.View.View.Measure(view.java:19917)在Android.View.ViewGroup.MeasureChildWithMargins(view.java:6139)在Android.View.View.Measure(view.java:185)在Android.View.View.Measure(view.java:19917)在Android.View.ViewGroup.MeasureChildWithMargins(viewGroup.FrameLayout.OnMeasure(FrameLayout.java:6139)在VA:1366)在Android.view.viewRootimpl.java:6768)在Android.view.choreographer.callbackd.run(choreographer.java:923)在Android.view.choreographer.docallback(choreographer.java:735)在Android.view.choreographer.doFrame(choreographer.java:667)在


共1个答案

匿名用户

您要做的是从线程访问视图。但该视图仅在UI线程中可用,因此会引发空指针异常。要实现这一点,您可以尝试:

Thread t = new Thread(new Runnable() { 
    @Override
    public void run() {
        while(i<90000) {
            i++;
            runOnUiThread(new Runnable {
                lastValue.setText(String.valueOf(i));
            });
        }
    }
});       
t.start();

runonuithread导致线程在UI线程上运行。