android - from - dialogfragment kotlin
DialogFragment setCancelable property not working (3)
Estoy trabajando en una aplicación de Android y estoy usando un DialogFragment para mostrar un diálogo y quiero que ese DialogFragment no se cancele. He convertido la propiedad de diálogo cancelable en falsa, pero aún no está afectando.
Por favor mira mi código y sugiéreme una solución.
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;
}
}
En caso de que use el generador de alertas (y probablemente en todos los casos ajuste el cuadro de diálogo dentro de un DialogFragment) para ayudar a construir su diálogo, no use getDialog (). SetCancelable (falso) o Dialog.setCancelable (falso) porque no va a funcionar. trabajo. Use setCancelable (false) como se muestra en el código a continuación tal como se menciona en la documentación oficial de Android:
public void setCancelable (boolean cancelable)
Agregado en el nivel API 11 Controle si el cuadro de diálogo que se muestra es cancelable. Use esto en lugar de llamar directamente a Dialog.setCancelable (boolean), porque DialogFragment necesita cambiar su comportamiento en función de esto. "
ref: 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;
}
Use el siguiente fragmento
void showDialog() {
DialogFragment newFragment = MyAlertDialogFragment.newInstance(
R.string..alert_dialog_two_buttons_title);
newFragment.setCancelable(false);
newFragment.show(getFragmentManager(), "dialog");
}
y si desea desactivar el cuadro de diálogo de toque externo, use la siguiente línea de código
DialogFragment.getDialog().setCanceledOnTouchOutside(true);
@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;
}
en lugar de getDialog().setCancelable(false);
tienes que usar directamente setCancelable(false);
entonces la respuesta actualizada será así
@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;
}