Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onResume()之后无法关闭AlertDialog_Android_Android Dialog - Fatal编程技术网

Android onResume()之后无法关闭AlertDialog

Android onResume()之后无法关闭AlertDialog,android,android-dialog,Android,Android Dialog,我正在检查活动何时启动位置服务是否已打开,如果未打开,我将打开一个对话框,启动“启用位置活动”意图。一旦我从it返回,我将检查该位置是否真的已启用,如果已启用,我将取消警报对话框 理论上,这应该是可行的,但当我的活动恢复并调用dialog.discouse()时,绝对不会发生任何事情 我的代码如下-: public class LocationUtils { private static AlertDialog dialog_ = null; public static void check

我正在检查活动何时启动位置服务是否已打开,如果未打开,我将打开一个对话框,启动“启用位置活动”意图。一旦我从it返回,我将检查该位置是否真的已启用,如果已启用,我将取消警报对话框

理论上,这应该是可行的,但当我的活动恢复并调用
dialog.discouse()
时,绝对不会发生任何事情

我的代码如下-:

public class LocationUtils {

private static AlertDialog dialog_ = null;

public static void checkAndEnableLocationServices(final Activity context) {
    LocationManager lm = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
    boolean gps_enabled = false;
    boolean network_enabled = false;

    try {
        gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
    } catch (Exception ex) {
        ex.printStackTrace();
    }

    try {
        network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    } catch (Exception ex) {
        ex.printStackTrace();
    }

    System.out.println("gps_enabled = " + gps_enabled);
    System.out.println("network_enabled = " + network_enabled);

    if (!gps_enabled && !network_enabled) {
        // notify user
        AlertDialog.Builder builder = new AlertDialog.Builder(context);

        builder.setMessage("Location services are disabled");
        builder.setPositiveButton("Enable Location Services", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                // TODO Auto-generated method stub

                Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                context.startActivity(myIntent);
                //get gps
            }
        });
        builder.setNegativeButton("Exit", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                context.finish();
            }
        });
        //For future reference.
        AlertDialog dialog = builder.create();

        dialog_ = dialog;

        dialog.show();
    } else {
        if(dialog_!=null) {
            dialog_.dismiss();
        }
    }
}
}

在我的主要活动中,我有一个onResume回调,它执行以下操作-:

@Override
protected void onResume() {
    super.onResume();
    System.out.println("Activity resume()");
    LocationUtils.checkAndEnableLocationServices(this);
}

我错过了什么?为什么这个对话框没有关闭?代码没有抛出任何错误。这对我来说是一个WTF时刻。

如果位置服务未启用,您可以在单击肯定按钮时关闭对话框,并在OnResume中显示它。

您正在调用本地警报对话框的alertDialog.show方法。 替换代码

   AlertDialog dialog = builder.create();
    dialog_ = dialog;

和onResume()

 dialog_ =  builder.create();
 dialog_.show
    if(dialog_!=null) {
        dialog_.dismiss();
    }