看板 AndroidDev 關於我們 聯絡資訊
我有一個class A extends Activity,裡面有一個method是用來做HttpGet的 該method有用到thread,大致上像這樣 public void httpGet(String url) { new Thread() { public void run() { client = new DefaultHttpClient(); request = new HttpGet(url); response = client.execute(request); reader = new BufferedReader(new InputStreamReader(response.getEntity() .getContent())); builder = new StringBuilder(); for (String s = reader.readLine(); s != null; s = reader.readLine()) { builder.append(s); } if (builder != null) { /* Transfer to JSONArray */ jsonTransfer = new JSONObject(builder.toString()); systemConfigJSONArray = jsonTransfer.getJSONArray("config"); runOnUiThread(performResult); } }.start(); } private Runnable performResult = new Runnable() { public void run() { closeProgressDialog(); performResult(systemConfigJSONArray); } }; /** Connect complete, interface for Override **/ public void performResult(JSONArray resultArray) { } 這樣寫其他有繼承class A的Activity就可以透傳入網址到httpGet(String url) 取得JSON格式的Array,再透過覆寫public void performResult(JSONArray resultArray) 進行各自需要轉換的東西 現在我有一個 Activity B extends A B裡頭有一個AlertDialog,其中使用setView(View v)的方法嵌入一個含有Spinner的View Spinner提供幾個url網址可供選擇 在選擇完成以後並按下AlertDialog的PositiveButton時 該PositiveButton透過DialogInterface.OnclickListener 將使用者選的網址丟給httpGet(String url)執行 可是執行時卻出現 AlertDialog(AlertController$ButtonHandler).handleMessage(Message) 的錯誤,並且不會去執行httpGet(String url)但是不會crash 接著我去嘗試使用Message丟給Handler Handler urlHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: httpGet("http://..."); break; case 2: httpGet("http"//..."); break; } super.handleMessage(msg); } }; 結果還是出現 AlertDialog(AlertController$ButtonHandler).handleMessage(Message) 請問我該怎麼改才能讓AlertDialog呼叫含有Thread的method? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.138.203
sdyy:看起來不像是呼叫thread的問題 不過線索不足 不敢確定 09/09 17:22
h124224:有點亂 看不太懂你要做什麼 09/11 19:00
h124224:不過alertdialog就會把目前的activity pause了 09/11 19:01
h124224:你應該要想辦法把method寫在alertdialog裡面 09/11 19:02