Tak, wiem, że istnieje AlertDialog.Builder, ale jestem zszokowany tym, jak trudno (cóż, przynajmniej nie przyjazny dla programisty) wyświetlić okno dialogowe w Androidzie.
Kiedyś byłem programistą .NET i zastanawiam się, czy istnieje coś podobnego do Androida?
if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){
// Do something...
}
Odpowiedzi:
AlertDialog.Builder naprawdę nie jest trudny w użyciu. Na początku jest to trochę onieśmielające, ale gdy trochę go użyjesz, jest zarówno proste, jak i potężne. Wiem, że powiedziałeś, że wiesz, jak go używać, ale i tak oto prosty przykład:
Możesz także użyć tego ponownie,
DialogInterface.OnClickListener
jeśli masz inne pola typu tak / nie , które powinny zrobić to samo.Jeśli tworzysz okno dialogowe z poziomu a
View.OnClickListener
, możesz użyć,view.getContext()
aby uzyskać kontekst. Alternatywnie możesz użyćyourFragmentName.getActivity()
.źródło
AlertDialog.Builder builder = new AlertDialog.Builder(getView().getContext());
Spróbuj tego:
źródło
The constructor AlertDialog.Builder(MainActivity.DrawerItemClickListener) is undefined
Odpowiedź Steve'a H jest natychmiastowa, ale oto nieco więcej informacji: okna dialogowe działają tak, jak działają, ponieważ okna dialogowe w Androidzie są asynchroniczne (wykonywanie nie zatrzymuje się, gdy okno dialogowe jest wyświetlane). Z tego powodu musisz użyć wywołania zwrotnego, aby obsłużyć wybór użytkownika.
Sprawdź to pytanie, aby uzyskać dłuższą dyskusję między różnicami w systemach Android i .NET (w odniesieniu do okien dialogowych): Dialogi / AlertDialogs: Jak „zablokować wykonywanie”, gdy okno dialogowe jest uruchomione (w stylu .NET)
źródło
To działa dla mnie:
źródło
Pytanie osoby, czy chce zadzwonić, czy nie Dialog ..
źródło
Odpowiedź Stevesa jest poprawna, choć nieaktualna z fragmentami. Oto przykład z FragmentDialog.
Klasa:
Aby uruchomić okno dialogowe:
Możesz także pozwolić klasie zaimplementować
onClickListener
i używać tego zamiast wbudowanych detektorów.źródło
Dzięki nikki twoja odpowiedź pomogła mi ulepszyć istniejącą, po prostu dodając pożądane działanie w następujący sposób
źródło
W Kotlinie:
źródło
Pokaż anonimowo okno dialogowe jako ciąg poleceń i bez definiowania innego obiektu:
źródło
Wszystkie odpowiedzi tutaj sprowadzają się do długiego i nieprzyjaznego dla czytelnika kodu: tego, czego osoba próbująca próbowała uniknąć. Dla mnie najłatwiejszym rozwiązaniem było zatrudnienie tutaj lambdów:
Lambdas na Androida wymaga wtyczki retrolambda ( https://github.com/evant/gradle-retrolambda ), ale i tak jest bardzo pomocny w pisaniu czystszego kodu.
źródło
Dzięki. Używać API Poziom 2 (Mobile 1.1) i zamiast
BUTTON_POSITIVE
aBUTTON_NEGATIVE
i użyćBUTTON1
iBUTTON2
.źródło
1. Utwórz alert Ustaw wiadomość, tytuł i znak pozytywny, przycisk negatywny:
2. Teraz znajdź oba przyciski na DialogInterface Kliknij, a następnie setOnClickListener ():
3. Aby wyświetlić Alertdialog:
Uwaga: Nie zapomnij końcowego słowa kluczowego za pomocą AlertDialog.
źródło
źródło
możesz wdrożyć ogólne rozwiązanie dla decyzji i użyć w innym przypadku nie tylko dla tak / nie i dostosować alert za pomocą animacji lub układu:
Coś takiego; najpierw utwórz swoją klasę do przesyłania danych:
po interfejsie do zwrócenia wyniku
Teraz możesz łatwo utworzyć narzędzia do dostępu (w tej klasie możesz zaimplementować inną animację lub niestandardowy układ alertu):
i ostatnie wezwanie w działaniu lub fragmencie; możesz użyć tego w swoim przypadku lub do innego zadania:
źródło
Możesz to zrobić tak łatwo w Kotlin:
źródło
Dla Kotlin w Androidzie ::
źródło
Wdrożenie Kotlin.
Możesz utworzyć taką prostą funkcję:
i nazwij to tak:
źródło