我的基本问题是如何使用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); }
}
答案 0 :(得分:1)
在onCreate()
中,您应该使用AsyncTask
已创建对象的句柄,而不是创建新对象。
使用
jsonHttpClass.execute(url_to_Http);
而不是
new GetJSON().execute(url_to_Http);