Aru*_*run 95 android android-dialogfragment
我在Android应用程序中工作,并使用DialogFragment显示对话框,我想使DialogFragment不可取消.我已将对话框cancelable属性设置为false,但仍然没有影响.
请查看我的代码并建议我一个解决方案.
public class DialogTest extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return super.onCreateDialog(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_test, container, true);
getDialog().requestWindowFeature(STYLE_NO_TITLE);
getDialog().setCancelable(false);
return view;
}
}
Run Code Online (Sandbox Code Playgroud)
Bla*_*elt 221
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_test, container, true);
getDialog().requestWindowFeature(STYLE_NO_TITLE);
getDialog().setCancelable(false);
return view;
}
Run Code Online (Sandbox Code Playgroud)
而不是getDialog().setCancelable(false);你必须直接使用setCancelable(false);
所以更新的答案将是这样的
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_test, container, true);
getDialog().requestWindowFeature(STYLE_NO_TITLE);
setCancelable(false);
return view;
}
Run Code Online (Sandbox Code Playgroud)
Usm*_*urd 48
使用以下代码段
void showDialog() {
DialogFragment newFragment = MyAlertDialogFragment.newInstance(
R.string..alert_dialog_two_buttons_title);
newFragment.setCancelable(false);
newFragment.show(getFragmentManager(), "dialog");
}
Run Code Online (Sandbox Code Playgroud)
如果要禁用外侧触摸对话框,请使用以下代码行
DialogFragment.getDialog().setCanceledOnTouchOutside(true);
Run Code Online (Sandbox Code Playgroud)
Xen*_*one 28
如果您使用警报构建器(并且可能在每种情况下都在DialogFragment中包装对话框)来帮助构建对话框,请不要使用getDialog().setCancelable(false)或Dialog.setCancelable(false)因为它不会工作. 使用setCancelable(false),如下面的代码所示,正如在官方android文档中提到的那样:
public void setCancelable (boolean cancelable)
Run Code Online (Sandbox Code Playgroud)
在API级别11中添加控制所显示的Dialog是否可取消.使用它而不是直接调用Dialog.setCancelable(boolean),因为DialogFragment需要根据它改变它的行为."
参考:http://developer.android.com/reference/android/app/DialogFragment.html#setCancelable(boolean)
public class MyDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_layout, null, false);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setTitle("in case you want use a title").setView(view);
AlertDialog alert = builder.create();
// alert.setCancelable(false); <-- dont' use that instead use bellow approach
setCancelable(false); <- press back button not cancel dialog, this one works fine
alert.setCanceledOnTouchOutside(false); <- to cancel outside touch
return alert;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42839 次 |
| 最近记录: |