我有一个cutstom DialogFragment
向用户显示一条消息:
public class MensajeDialogFragment extends DialogFragment {
TextView mTvMensaje;
TextView mTvTitulo;
Button mBtnAceptar;
Button mBtnCancelar;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View dialogView = inflater.inflate(R.layout.layout_mensaje_dialog, null);
mTvTitulo = (TextView) dialogView.findViewById(R.id.tvTitulo);
mTvMensaje = (TextView) dialogView.findViewById(R.id.tvMensaje);
mBtnAceptar = (Button) dialogView.findViewById(R.id.btnAceptar);
mBtnCancelar = (Button) dialogView.findViewById(R.id.btnCancelar);
mTvTitulo.setText(getArguments().getString(getString(R.string.bundle_titulo), ""));
mTvMensaje.setText(getArguments().getString(getString(R.string.bundle_mensaje), ""));
mBtnAceptar.setText(getArguments().getString(getString(R.string.bundle_aceptar), ""));
mBtnCancelar.setText(getArguments().getString(getString(R.string.bundle_cancelar), ""));
builder.setView(dialogView);
getDialog().setCanceledOnTouchOutside(true);
return builder.create();
}
}
但是当我到达getDialog().setCanceledOnTouchOutside(true)
时,由于NullPointerException
正在返回getDialog()
,我收到null
。
我做错了什么?我想在用户点击对话框时关闭对话框。
答案 0 :(得分:1)
由于您使用的是 DialogFragment ,因此无法在 DialogFragment 的onCreate上初始化对话框。 我相信当用户在其外部点击时,默认情况下DialogFragment会关闭。您不必明确声明它。如果您仍想调用此函数,则 DialogFragment 会有一个名为
的函数 DialogFragment.setCancelable(boolean)
修改
如果上述代码无效,您可以尝试拨打
getDialog().setCanceledOnTouchOutside(true);
在onCreateDialog期间,在 getLayoutInflater 上初始化onCreateView作为Dialog对象。因此,当它到达onCreateView时,对话框对象将被初始化。