如何停止在对话框片段中的触摸侧
how to stop on Touch out side in dialog fragment
我正在使用对话框片段,
当我点击 fab 时,我会显示对话框,但是当我这样做时我必须 setCanceledOnTouchOutside
应用程序崩溃了!
所以,我怎样才能停止触摸侧面
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fm = getSupportFragmentManager();
addAction add = new addAction();
add.getDialog().setCanceledOnTouchOutside(false);
add.show(fm,"fragment_edit_name");
}});
我收到了这个错误
09-26 13:06:21.997 2890-2890/com.example.todo.todoapplication E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.todo.todoapplication.MainActivity.onClick(MainActivity.java:94)
第 94 行是 add.getDialog().setCanceledOnTouchOutside(false);
试试这个:
Window window = dialog.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.show();
详情
Android click event outside a dialog
在 oncreatedialog()
方法中设置 setCanceledOnTouchOutside(true)
。
例子
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(getActivity(), getThemeId());
final View view = getActivity().getLayoutInflater().inflate(
R.layout.settings, null);
dialog.setTitle(getResources().getString(R.string.action_settings));
dialog.setCanceledOnTouchOutside(true);
return dialog;
}
我正在使用对话框片段,
当我点击 fab 时,我会显示对话框,但是当我这样做时我必须 setCanceledOnTouchOutside
应用程序崩溃了!
所以,我怎样才能停止触摸侧面
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fm = getSupportFragmentManager();
addAction add = new addAction();
add.getDialog().setCanceledOnTouchOutside(false);
add.show(fm,"fragment_edit_name");
}});
我收到了这个错误
09-26 13:06:21.997 2890-2890/com.example.todo.todoapplication E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.todo.todoapplication.MainActivity.onClick(MainActivity.java:94)
第 94 行是 add.getDialog().setCanceledOnTouchOutside(false);
试试这个:
Window window = dialog.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.show();
详情 Android click event outside a dialog
在 oncreatedialog()
方法中设置 setCanceledOnTouchOutside(true)
。
例子
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(getActivity(), getThemeId());
final View view = getActivity().getLayoutInflater().inflate(
R.layout.settings, null);
dialog.setTitle(getResources().getString(R.string.action_settings));
dialog.setCanceledOnTouchOutside(true);
return dialog;
}