android - 未显示警报对话框
问题描述
当点击preferenceScreen 上的Preference 时,我试图发出警告对话框。
我的代码如下:
public class AlertDialogFragment extends DialogFragment {
@NotNull
public Dialog onCreateDialog(Bundle savedInstanceState){
AlertDialog.Builder builder = new AlertDialog.Builder(Objects.requireNonNull(getActivity()));
builder.setMessage(R.string.are_you_sure);
builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//something
}
})
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//something
}
});
return builder.create();
}
}
我从这个类创建了一个对象并调用了该show()
方法,但是在运行应用程序并点击首选项之后,什么也没有发生。
这是我的另一堂课:
public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey){
setPreferencesFromResource(R.xml.prefs, rootKey);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sp, String key){
FragmentManager manager = getFragmentManager();
AlertDialogFragment alert = new AlertDialogFragment();
if(key.equals("logout")){
if (manager != null) {
alert.show(manager, "tag");
}
}
}
}
有人有什么主意吗?
解决方案
推荐阅读
- python - 如何找到我在公共组中写过的所有消息?
- google-cloud-pubsub - Google 课堂添加 IAM 策略绑定
- reactjs - 如何在所有页面(所有组件)ReactJs 中显示类似用户名的属性?
- c++ - SDL2 窗口不会立即关闭?
- node.js - 为什么我的 ejs 模板没有显示相关数据?
- django - Django REST Viewsets - 无法使用自定义查询集删除
- php - 在 laravel 中找不到资源的奇怪问题
- c++ - 通过分隔符将 QString 拆分为多个 QString?
- javascript - 如何像在典型的图形编辑器中那样使用鼠标滚轮实现缩放
- java - 这种类型的正则表达式命令是否存在?