【问题标题】:Why doesn't this update the screen after it is fired?为什么它在触发后不更新屏幕?
【发布时间】:2012-10-18 22:27:36
【问题描述】:

我正在安排一个应该在 4 秒内更新文本字段的简单任务。

但是,每次调用此活动时,活动都会暂停,并且在我重新启动活动之前不会在文本字段中显示值。

 private void showDelayedValue() {

    Runnable longRunningTask = new Runnable() {
        public void run() {

        int randomVal = randomNumberGenerator.nextInt(30 - -10) - 10; //random number between -10 and 30
        String randomValStr = Integer.toString(randomVal);

            Log.i(this.getClass().getSimpleName(),
                "FIRED startScheduler: " + randomValStr);

        theFieldOnScreenTV.setText(randomTempStr);

        }
    };
    //show the value in 2 seconds
    scheduledTaskExecutor.schedule(longRunningTask, 4, TimeUnit.SECONDS);

    }

日志显示:

FIRED startScheduler: 4

但不更新TextView theFieldOnScreenTV

而是在 Fired startScheduler: 显示在 LogCat 之后立即调用 onPause

非常感谢!

编辑:

按照 Alex 的方法,这对我有用:

private void showDelayedValue() {
    int randomX = randomNumberGenerator.nextInt(30 - -10) - 10; 
    final String randomXStr = Integer.toString(randomX);
    final Runnable updateFieldR = new Runnable() {
        public void run() {
        theFieldOnScreenTV.setText(randomXStr);
        }
    };

    Runnable longRunningTask = new Runnable() {
        public void run() {
        theFieldOnScreenTV.post(updateFieldR);

        }
    };
    scheduledTaskExecutor.schedule(longRunningTask, 4, TimeUnit.SECONDS);

    }

【问题讨论】:

  • 尝试调用 theFieldOnScreenTV.invalidate();在 setText();. 之后
  • 我做了,但没有帮助,谢谢!

标签: android scheduled-tasks task


【解决方案1】:

而不是

theFieldOnScreenTV.setText(randomTempStr); 

试试

theFieldOnScreenTV.post(new Runnable() { theFieldOnScreenTV.setText(randomTempStr); } );

【讨论】:

  • 谢谢。超级好主意!建议的代码不起作用,我得到了 Runnable 需要实现运行的错误,这就是为什么我按照上面编辑中显示的方式实现它 - 遵循你关于使用 runnable 更新 textview 的想法 - 这解决了问题!跨度>
【解决方案2】:

尝试使用处理程序。

Handler handler = new Handler();
handler.post(new Runnable() {

@Override
public void run() {

theFieldOnScreenTV.setText(randomTempStr);          
    }
});

【讨论】:

  • 正确使用的处理程序可以工作 - 但更复杂 - 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 2020-07-26
相关资源
最近更新 更多