我有一个关于 Android 对话框的问题,大部分问题出现在三星设备上,我不确定其他设备是否有同样的问题。
显示对话框(AlertDialog 或 DialogFragment)时,它没有焦点,我无法单击对话框上的任何内容。似乎重点仍然是创建对话框的活动或片段,对话框下方的活动/片段对我的触摸事件有响应。
我用它来创建一个 AlertDialog
new AlertDialog.Builder(activity)
.setTitle(R.string.about_title)
.setMessage(buildAppInfo())
.setNegativeButton(R.string.app_ok, (dialog, which) -> dialog.dismiss())
.show());
这是我的 DialogFragment 类:
public class MyDialog extends DialogFragment {
private MyDialogBinding binding;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme_Holo_Light_Dialog_NoActionBar_MinWidth);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = DataBindingUtil.inflate(inflater, R.layout.my_dialog, container, false);
binding.tvTitle.setText(R.string.dialog_title);
binding.tvMessage.setText(R.string.dialog_content);
binding.btnCancel.setOnClickListener(v -> dismiss());
return binding.getRoot();
}
@Override
public void show(@NonNull FragmentManager manager, String tag) {
if (!isAdded() && null == manager.findFragmentByTag(tag)) {
super.show(manager, tag);
}
}
}
并使用它来创建一个 DialogFragment
private final MyDialog dialog = new MyDialog();
dialog.show(getChildFragmentManager(), "");
函数 setCancelableOnTouchOutside
不起作用。这个问题有时会发生,当它发生时,我必须重新启动我的应用程序。非常感谢您的帮助。