当前位置: 首页 > 知识库问答 >
问题:

刷新线程中的editText

羊刚捷
2023-03-14

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

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个答案

易琛
2023-03-14

您要做的是从线程访问视图。但该视图仅在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线程上运行。

 类似资料:
  • 问题内容: 线程1:正在执行此循环 线程2将运行错误设置为假如果运行是易失性变量,则线程1退出循环并显示“完成”。 我的问题是,如果运行不是易失的,那么Thread1何时从主内存中读取运行变量? 注意:我很了解同步和volatile变量之间的关系,但是即使运行不是volatile或同步的,线程1也会停止。所以我的问题是,鉴于没有同步或没有波动,线程1什么时候决定从主存储器读取数据 问题答案: 这在

  • 问题内容: 我有一个主程序,其中GUI是基于swing的,并且取决于四种状态之一,GUI元素具有不同的参数。 而且,如果我想刷新,GUI只会调用具有适当参数的updateGUI,一切都很好。但是该程序还会创建一个附加线程,该线程在处理相关数据后应更改GUI主程序。不幸的是,我无法在此线程中调用方法updateGUI(..)。 我知道我可以使用invokeLater或SwingWorker进行刷新,

  • 问题内容: 我想在新的JDialog中创建JProgressBar,它将与主逻辑处于不同的线程中。因此,我可以通过仅创建新的JDialog并通过处置JDialog完成该进度来开始不确定的进度。但这给了我很多时间,因为在出​​现JDialog之后,直到完成主线程(SwingUtilities)中的逻辑后,它才显示任何组件(包括JProgressBar)。 包含JDialog的线程: JProgres

  • 我的应用程序中有一个Recolyer视图,我从用户那里获取值并将其存储在SQLite数据库中,然后这些值将通过检索显示在Recolyer视图中。问题是回收器视图只有在我重新打开我的活动时才更新,所以我如何在不重新打开活动的情况下刷新回收器视图,我应该使用UI线程吗?图像:插入项目后 在重新打开activty后,当用户单击insert按钮时,我想在recyclearview上显示插入的项目

  • 问题内容: 如果将新文档索引到Elasticsearch索引,则可在索引操作后1秒钟左右搜索新文档。但是,可以通过调用或对索引进行操作来强制使该文档可立即搜索。这两个操作之间有什么区别- 结果似乎对他们来说是相同的,可以立即搜索文档。 这些操作中的每一项到底是什么? ES文档似乎并未深入解决此问题。 问题答案: 您得到的答案是正确的,但我认为值得详细说明。 刷新有效地调用了Lucene索引读取器上

  • 使用spring-Cloud网关2.0.0. M5,我在配置文件(application.yml)中定义路由。我试图通过调用POST来更新这些路由 /application/gateway/refresh. 修改后的路由或新路由不会被刷新,即使我看到(带有断点)实际上执行了刷新例程。 当在配置文件中定义路由时,刷新应该工作吗?我错过了什么? 用例是在spring配置服务器中定义的路由。