Java 运行中的Android TextView问题()

Java 运行中的Android TextView问题(),java,android,multithreading,textview,Java,Android,Multithreading,Textview,错误在于findViewByIdmy标签为lbtcper 我之所以在run()中使用它,是因为该块需要运行,直到值达到100 我知道,通常情况下,您必须在视图v中插入,但它会否定void run() 我寻找了一些解决方案,但还没有找到一个有效的例子 我也相信我昨天已经发布了这篇文章,但我似乎在任何地方都找不到。它不在我的帐户下,我清楚地记得我发布了它并等待回复。findViewById()是Android或Windows的一个功能。您的BTCSync类不扩展这两个类 很可能更适合您的需求。除了f

错误在于
findViewById
my标签为lbtcper

我之所以在
run()
中使用它,是因为该块需要运行,直到值达到100

我知道,通常情况下,您必须在视图v中插入,但它会否定void run()

我寻找了一些解决方案,但还没有找到一个有效的例子

我也相信我昨天已经发布了这篇文章,但我似乎在任何地方都找不到。它不在我的帐户下,我清楚地记得我发布了它并等待回复。

findViewById()
是Android或Windows的一个功能。您的
BTCSync
类不扩展这两个类


很可能更适合您的需求。

除了findViewById问题之外,您正在尝试在非UI线程上执行UI工作。您需要使用runOnUiThread(),否则会发生崩溃:

class BTCSync extends Thread{
        public void run(){
            while(!BTC && MainPage.BTC){
                TextView BTCPer = (TextView) findViewById(R.id.lblBTCPer);
                BTCPer.setText(BTCProgress+"%");
                if(BTCProgress == 100) {
                    BTCPer.setText("100%");
                    BTC = true;
                }
            }
        }
    }

Android应用程序只有一个UI线程,并且Android UI工具包不是线程安全的,必须始终在UI线程上操作

为了在其他线程中更新ui,您可以使用
处理程序
,下面是


这里有一个好的Android禁止在UI线程之外更改UI(例如设置文本视图的文本)

如果你能打这个电话

    runOnUiThread(new Runnable() {
    @Override
    public void run() {
            BTCPer.setText(BTCProgress+"%");
            if(BTCProgress == 100) {
                BTCPer.setText("100%");
                BTC = true;
            }
    }
});
这意味着线程是在活动中定义的,因为
findViewById()
不是
thread
的函数。在这种情况下:

TextView BTCPer = (TextView) findViewById(R.id.lblBTCPer);
class BTCSync extends Thread{
        public void run(){
            while(!BTC && MainPage.BTC){
                TextView BTCPer = (TextView) findViewById(R.id.lblBTCPer);
                // make sure you enable lambdas
                runOnUiThread(() -> BTCPer.setText(BTCProgress+"%"));
                if(BTCProgress == 100) {
                    BTCPer.setText("100%");
                    BTC = true;
                }
            }
        }