我有这个代码,它会在它到达Source.httpConn
时立即捕获,并且它会在下面发送异常来捕获。
try
{
JSONTokener sbTokener = new JSONTokener(Source.httpConn(infoUrlStr, Main.this).toString());
//array için hazırlandı
JSONArray jArray=new JSONArray(sbTokener);
//arraye eklendi
for(int i=0; i<(jArray.length()); i++)
.
.
.
}
在catch部分中有一个我的警告对话框方法。它通常工作得很好但我怀疑我有问题因为doInBackground
。应用程序在显示以下警告对话框之前崩溃。所有try-catch都在doInBackground
中的ASyncTask
方法中。
catch (Exception e) {
AlertDialogDisp(Main.this, noServ, noServLog);
}
如何使我的应用程序不崩溃,只显示此警报对话框,然后返回到我的主要活动。这是我的警告对话框方法:
protected void AlertDialogDisp(Context dialogContext, String head, String log) {
new AlertDialog.Builder(dialogContext)
.setTitle(head)
.setMessage(log)
.setPositiveButton("okay", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// On Alert Dialog Button
dialog.dismiss();
}
})
.show();
}
答案 0 :(得分:3)
您无法从doInbackground
更新ui。在backgroudn线程上调用doInbackground
。 Ui应该在ui线程上更新。将结果返回到doInbackground
并在onPostExecute
有关详细信息,请查看文档
http://developer.android.com/reference/android/os/AsyncTask.html
您还可以使用runOnUithread
这是一种活动类
runOnUiThread(new Runnable(){
public void run() {
// dispaly dialog here
// no network related operation here
}
});
答案 1 :(得分:1)
在runOnUiThead
中显示您的对话框,这是一种活动类的方法。
runOnUiThread(new Runnable(){
public void run() {
//write your alert dialog code here
}
});