安卓:带有AlertDialog的偏好设置

3
我的OnPreferenceClickListener创建了一个新的AlertDialog,如下所示。当我运行程序时,会出现异常。
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

我的代码哪里出了问题?
public static class PrefsFragment extends PreferenceFragment {
    Preference pref= findPreference("text_preference1");
    pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
        @Override
        public boolean onPreferenceClick(Preference preference) {
            new AlertDialog.Builder(mContext).setTitle(R.string.alert_dialog_title)
                    .setMessage(R.string.alert_dialog_message)
                    .setPositiveButton(R.string.alert_dialog_ok,
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                        }
                    })
                    .setNegativeButton(R.string.alert_dialog_nein, null).show();

                    //do s.th.
        return false;
        }
    });
}
1个回答

3

我想你正在获取ApplicationContext。但是它不应该用于创建对话框。

new AlertDialog.Builder(mContext)中,您应该使用getActivity(),它返回与片段相关联的活动。

由于您正在使用片段,因此只需调用片段的getActivity()方法即可获取活动的上下文。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接