作者ivanf10710 (Ivan)
看板AndroidDev
標題[問題] 在Dialog裡面呼叫有使用thread的method
時間Fri Sep 7 14:11:00 2012
我有一個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