Откройте диалоговое окно оповещения при отсутствии интернета и повторите попытку - Android

Это не повторяющийся вопрос, теперь я знаю, как проверить, есть ли подключение к Интернету, но я не знаю, как вызвать диалоговое окно в цикле while и повторить попытку, пока подключение к Интернету не восстановится

Я пытаюсь открыть диалоговое окно предупреждения, если нет подключения к Интернету, а затем дождаться, пока пользователь нажмет «Попробовать еще раз», когда он нажмет кнопку, проверить подключение к Интернету и снова открыть это диалоговое окно предупреждения, если нет подключения к Интернету.

Когда я делаю это с оператором if, он работает хорошо - открывайте диалоговое окно, когда нет Интернета, и проверяйте соединение, когда нажимаете «Попробовать еще раз». Но когда я пытаюсь поместить это в цикл while, цикл не ждет/показывает диалог пользователю.

Как правильно это сделать? а почему сейчас не работает?

while (netInfo == null || !netInfo.isConnected()) {
    new AlertDialog.Builder(this)
            .setTitle("title")
            .setMessage("message")
            .setPositiveButton("Try Again", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                    netInfo = cm.getActiveNetworkInfo();
                    System.out.println("cm: "+cm+ " netinfo: "+ netInfo);
                }
            })
            .show();
}

person Yuval Levy    schedule 23.12.2015    source источник
comment
Проверьте это stackoverflow.com/questions/4238921/   -  person Arth Tilva    schedule 23.12.2015
comment
Используйте для этого BroadcastReceiver.   -  person Piyush    schedule 23.12.2015


Ответы (1)


попробуйте этот код вызвать метод getDATA(), а onCreate() в действии, это может помочь

private void getDATA() {
        boolean isProcess;
        try {
            isProcess = Utils.isNetworkConnected(class.this) || Utils.hasActiveInternetConnection(); //method to check internet connection
        } catch (Exception e) {
            isProcess = false;
            e.printStackTrace();
        }

        if (isProcess) {
            try {          
                AlertDialog.Builder builder =
                            new AlertDialog.Builder(class.this, R.style.AppCompatAlertDialogStyle);
                    builder.setTitle(getResources().getString(R.string.app_name));
                    builder.setMessage("Internet not available?");
                    builder.setPositiveButton("Try Again", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            getDATA();
                        }
                    });                   
                    builder.setCancelable(false);
                    builder.show();
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            Crouton.makeText(class.this, MessageConstant.MsgWiFi, Style.ALERT).show();
        }
    }
person Amit Vaghela    schedule 23.12.2015
comment
Можете ли вы объяснить, почему мой цикл while не работает? - person Yuval Levy; 23.12.2015
comment
отлаживайте свой код или опубликуйте полный код. - person Amit Vaghela; 23.12.2015
comment
это полный код. его единственный цикл while, который предполагает всплывающее диалоговое окно, если нет подключения к Интернету - person Yuval Levy; 23.12.2015
comment
используйте этот ответ, если он помогает. - person Amit Vaghela; 23.12.2015