Pracuję w aplikacji na Androida i używam DialogFragment, aby wyświetlić okno dialogowe i chcę, aby ten DialogFragment nie był anulowany. Ustawiłem właściwość anulowania okna dialogowego na wartość false, ale nadal nie ma to wpływu.
Proszę zajrzeć do mojego kodu i zasugerować mi rozwiązanie.
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;
}
}
Odpowiedzi:
zamiast tego
getDialog().setCancelable(false);
musisz używać bezpośredniosetCancelable(false);
więc zaktualizowana odpowiedź będzie taka
źródło
Użyj następującego fragmentu
a jeśli chcesz wyłączyć dotykanie strony zewnętrznej wokół okna dialogowego, użyj następującego wiersza kodu
źródło
Jeśli używasz narzędzia do tworzenia alertów (i prawdopodobnie w każdym przypadku zawijasz okno dialogowe wewnątrz DialogFragment), aby pomóc w tworzeniu okna dialogowego, nie używaj metody getDialog (). SetCancelable (false) lub Dialog.setCancelable (false), ponieważ to nie będzie praca. Użyj setCancelable (false), jak pokazano w kodzie poniżej, jak wspomniano w oficjalnej dokumentacji Androida:
Dodano na poziomie API 11. Kontroluje, czy wyświetlane okno dialogowe można anulować. Użyj tego zamiast bezpośredniego wywoływania Dialog.setCancelable (boolean), ponieważ DialogFragment musi zmienić swoje zachowanie na tej podstawie. "
ref: http://developer.android.com/reference/android/app/DialogFragment.html#setCancelable(boolean)
źródło
Proste rozwiązanie w DialogFragment
Używany
źródło