我做了这段代码,我需要在屏幕上实时显示一些值,所以,我试着这样做,有人知道是怎么回事吗?
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)在
您要做的是从线程访问视图。但该视图仅在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线程上运行。