0

我有这段代码,它一旦命中就会立即捕获,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();
}
4

2 回答 2

3

您无法从doInbackground. doInbackground在后台线程上调用。ui 应该在 ui 线程上更新。返回结果doInbackground并更新uionPostExecute

有关更多信息,请查看文档

http://developer.android.com/reference/android/os/AsyncTask.html

您也可以使用runOnUithreadwhich 是活动类的方法

runOnUiThread(new Runnable(){
        public void run() {
           // dispaly dialog here
           // no network related operation here
        }
     });
于 2013-10-12T07:08:05.917 回答
1

显示您的对话框,runOnUiThead其中是活动类的方法。

runOnUiThread(new Runnable(){
        public void run() {

                  //write your alert dialog code here

        }
     });
于 2013-10-12T07:10:35.260 回答