Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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对话框不会关闭_Android_Dialog_Settings - Fatal编程技术网

打开系统位置设置后,android对话框不会关闭

打开系统位置设置后,android对话框不会关闭,android,dialog,settings,Android,Dialog,Settings,我有一个对话框,提示用户启用gps定位,如果它没有启用 打开设置后,用户启用gps,并从位置设置屏幕上按下后退按钮,他们返回应用程序,但对话框仍然可见 这是单击的按钮的代码 // On pressing Settings button alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dial

我有一个对话框,提示用户启用gps定位,如果它没有启用

打开设置后,用户启用gps,并从位置设置屏幕上按下后退按钮,他们返回应用程序,但对话框仍然可见

这是单击的按钮的代码

    // On pressing Settings button
    alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int which) {
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            mContext.startActivity(intent);
            dialog.dismiss();
        }

    });
我的问题是,为什么dialog.discouse()不关闭对话框,我也尝试了dialog.cancel(),结果相同。打开设置屏幕后,我应该做些什么


谢谢,

我的
活动中正好有这个代码

private void showLocationDisabledInfo() {
    final Context c = this;
    AlertDialog.Builder builder = new AlertDialog.Builder(c);
    builder.setMessage("TEST");
    builder.setPositiveButton("OK", new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            c.startActivity(intent);
        }
    });
    builder.setNeutralButton(R.string.cancel, null);
    builder.create().show();
}

无论我点击哪个按钮,它都会自动关闭对话框。它来自于我的应用程序,在使用API
8
10
的设备上进行了测试,并且模拟器运行API
17
。我们代码之间的唯一区别(可能)是
mContext
的值。请提供负责设置对话框和环境的完整代码,您可以在其中看到所描述的行为。

谢谢。是的,我从一个web教程中借用了一些代码,它设置了如下上下文:private final context mContext;然后在几行之后设置它。删除“最终”解决了问题。我是java新手,这是如何工作的?如果设置已经被定义为最终设置,我希望设置会导致错误?是的,差不多。必须在声明或类构造函数中设置最终字段。在其他地方设置或重新设置它们会导致编译时错误。必须在声明时设置最终局部变量,并且不能重新设置。但是要小心——如果有人把
mContext
说成是
final
,也许他这样做是有原因的;)