【发布时间】:2018-11-25 13:23:00
【问题描述】:
我正在使用 PreferenceFragmentCompat 来显示和设置 SharedPreferences。这一切都很好。但是,我在日志中不断收到“W/InputEventReceiver:尝试完成输入事件,但输入事件接收器已被释放。”,因为 PreferencesFragmentCompat 使用的标准对话框似乎没有使用.setCancelable(false) 在其 showDialog 方法中。我想我可以构建自己的自定义对话框,但这似乎只是为了解决这个小问题有点矫枉过正。有没有办法简单地覆盖该方法?
更新:
将它添加到我的 PreferencesFragmet 就足够了(删除了 MultiSelectListPreferenceDialogFragmentCompat,因为我不使用它)
@Override
public void onDisplayPreferenceDialog(Preference pref) {
DialogFragment dialogFragment = null;
String DIALOG_FRAGMENT_TAG = "androidx.preference.PreferenceFragment.DIALOG";
if (pref instanceof EditTextPreference) {
dialogFragment = EditTextPreferenceDialogFragmentCompat.newInstance(pref.getKey());
} else if (pref instanceof ListPreference) {
dialogFragment = ListPreferenceDialogFragmentCompat.newInstance(pref.getKey());
}
if (dialogFragment != null) {
dialogFragment.setTargetFragment(this, 0);
dialogFragment.setCancelable(false); //adding this!
if (this.getFragmentManager() != null) {
dialogFragment.show(this.getFragmentManager(), DIALOG_FRAGMENT_TAG);
}
} else {
super.onDisplayPreferenceDialog(pref);
}
}
【问题讨论】:
标签: java android dialog preferencescreen