【发布时间】:2014-06-25 17:47:31
【问题描述】:
我正在尝试使用AsyncTask 正在进行的后台任务的相关信息来更新我的用户界面。这是我的onProgressUpdate() 方法。
@Override
protected void onProgressUpdate(final String... params) {
Log.d(TAG, "onProgressUpdate()");
StringBuilder currentParam = new StringBuilder();
StringBuilder statusMessage = new StringBuilder();
txtInputFile.setText("Input: " + params[0]);
txtOutputFile.setText("Output: " + params[1]);
txtPercentDone.setText("" + MainActivity.getProgressStatus(statusMessage, currentParam) + "%");
txtStatusMessage.setText(statusMessage);
txtParamName.setText(currentParam);
}
但是,没有一个 TextView 更新它们的文本。我在doInBackground() 方法中调用publishProgress()。日志显示onProgressUpdate() 被正确调用。我知道 TextViews 已经实例化并且不为空。有谁知道怎么回事?
更新:
这可能与此代码位于嵌套片段(正在更新的 ui)中的事实有关。当我将相同的片段显示为根时,一切正常。但我需要将它嵌套在这种情况下。为什么会有所作为?
【问题讨论】:
-
也尝试记录 thead id。
-
@icbytes 它们通过每个单独的日志显示在 LogCat 中,我可以确认此处显示的日志来自 ui 线程。
-
调试是什么?你在传递参数吗?
-
@icbytes 我正在传递参数,它们是正确的,我已经记录了它们的值。方法
MainActivity.getProgressStatus也是正确的,因为我现在对其进行了硬编码。 -
啊,我明白了。您的字符串生成器永远不会被填满。如果状态字段是相关的。
标签: android android-asynctask textview