异步任务无法更新GUI

时间:2012-02-16 13:49:46

标签: java android

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

主程序:

  

public class 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);
} 
     

}

1 个答案:

答案 0 :(得分:1)

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

使用

jsonHttpClass.execute(url_to_Http);

而不是

new GetJSON().execute(url_to_Http);