为了账号安全,请及时绑定邮箱和手机立即绑定

运行中的Android TextView问题()

运行中的Android TextView问题()

呼唤远方 2022-01-06 17:13:36
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;                }            }        }    }错误是findViewById我的标签是 lblBTCPer。我有它的原因run()是这个块需要运行直到值达到 100。我知道通常情况下,您必须输入 View v,但随后它会否定 void run()。我寻找了一些解决方案,但我还没有找到一个有效的例子。我也相信我昨天已经发布了这个,但我似乎无法在任何地方找到它。它不在我的帐户下,我清楚地记得发布它并等待回复。
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

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

为了在其他线程中更新 ui,您可以使用handler,这里是ref

这是一个很好的例子


查看完整回答
反对 回复 2022-01-06
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

findViewById()Android ActivityView的函数。您的BTCSync课程不会扩展这两者。

很可能Timertask 或 Handler更适合您的要求。


查看完整回答
反对 回复 2022-01-06
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

除了 findViewById 问题,您还尝试在非 UI 线程上进行 UI 工作。你需要使用 runOnUiThread() 否则你会崩溃:


    runOnUiThread(new Runnable() {

    @Override

    public void run() {

            BTCPer.setText(BTCProgress+"%");

            if(BTCProgress == 100) {

                BTCPer.setText("100%");

                BTC = true;

            }

    }

});


查看完整回答
反对 回复 2022-01-06
  • 3 回答
  • 0 关注
  • 232 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号