2014-01-14 50 views
0

我正在开发一个Android应用程序,我想检查是否有互联网连接,如果不是这种情况显示警告消息,并且当互联网连接再次加载某个URL。Android alertdialog没有显示,当我认为它应该

可以说,既显示消息,并检查有互联网连接工作......但没有单独。

我的意思是我有以下代码:(!checkConnectivity())

 if (!checkConnectivity()) 
       { 

        browser.stopLoading(); 


        LayoutInflater layoutinflater = LayoutInflater.from(app); 
        final View textEntryView; 


         textEntryView = layoutinflater.inflate(R.layout.exitdialog, null); 
         new AlertDialog.Builder(app) 
          .setView(textEntryView) 
          .setIcon(android.R.drawable.ic_dialog_alert) 
          .setTitle("Exit")        
          .setNegativeButton("CANCEL", null) 
          .show(); 



         while (!checkConnectivity()) 
         { 

         } 

          browser.loadUrl(url); 


       } 

如果我不从,而使用browser.loadUrl(URL);那么AlertDialog会正确显示。

如果我不使用LayoutInflater layoutinflater = LayoutInflater.from(app);以显示();那么应用程序会在浏览器上正确加载网页。

但是,如果我使用整个代码,它看起来像它进入while(!checkConnectivity())循环之前,它显示为互联网连接重新稳定时发生的事情是警报对话框简要显示,网络页面已加载。

我觉得这很奇怪,因为我没有使用,据我所知,可能会导致一个可能会在另一个之前执行的线程,并且这不是这种情况不符合编程中最基本的东西,我的意思是如果一个指令在另一个指令之前,那么以前的指令应该被大量逻辑地执行(线程除外)。

希望有人对此有一个想法,可以帮助我。

回答

1

您的while循环会阻止UI线程,并且对话框无法显示。

繁忙循环查询条件也是一个大红旗。

考虑等待connectivity event,并使用可取消的progress dialog而不是一个警报对话框来禁用其他UI,直到收到事件。

相关问题