【问题标题】:Async task can't update GUI异步任务无法更新 GUI
【发布时间】:2012-02-16 13:49:46
【问题描述】:

我的基本问题是如何使用 AsyncTask 更新 GUI。我在 GUI 线程引用的onPostExecute 中设置了一个String。使用日志记录,我可以看到在 onPostExecute 方法中设置了 String,但它永远不会在我的 onClickListener 下的 GUI 上设置以更新 GUI。任何帮助表示赞赏。

主程序:

公共类 Main 扩展 Activity {

/** Called when the activity is first created. */
Arduino.ToAndroid.Temperature.GetJSON jsonHttpClass = new Arduino.ToAndroid.Temperature.GetJSON();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    new GetJSON().execute(url_to_Http);
}
View.OnClickListener temperatureListener = new View.OnClickListener() {
    public void onClick(View v) {
        // TODO Auto-generated method stub
        // buttonTemperature = json.getTemp();
        tempView.setText(jsonHttpClass.value);
        Log.i("ROSS LOG", "Button Clicked");
    }
}; }

异步任务:

类 GetJSON 扩展 AsyncTask {

public String value;

@Override
protected String doInBackground(String... url) {
    String result = this.getHttpJson(url[0]);
    return result;
}

@Override
protected void onPostExecute(String result) {
    value = new String(result);
    Log.i("ROSS LOG", value);
} 

}

【问题讨论】:

  • 尚不清楚您的 temperatureListener 何时添加到您的按钮视图中。单击按钮时是否出现“Button Clicked”日志消息?
  • 我使用 temperatureListener 作为更新 GUI 的按钮。是的,会出现“单击按钮”日志消息。 Deepak 能够找到我的问题,但感谢您的帮助!

标签: java android


【解决方案1】:

onCreate() 中,您应该使用AsyncTask 的已创建对象的句柄,而不是创建新对象。

使用

jsonHttpClass.execute(url_to_Http);

而不是

new GetJSON().execute(url_to_Http); 

【讨论】:

  • 就是这样。我应该抓住它。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多