Düzenli bir diyalog göstermesi gereken bazı parçalarım var. Bu iletişim kutularında kullanıcı bir evet / hayır cevabı seçebilir ve ardından parça buna göre davranmalıdır.
Şimdi, Fragment
sınıfın onCreateDialog()
geçersiz kılmak için bir yöntemi yok, bu yüzden diyalogları dışında, kapsama alanına uygulamalıyım sanırım Activity
. Sorun değil, ama sonra Activity
seçilen cevabı bir şekilde bölüme geri bildirmek gerekiyor. Elbette burada bir geri arama modeli kullanabilirim, böylece parça kendisini Activity
bir dinleyici sınıfına kaydeder ve Aktivite bunun aracılığıyla yanıtı geri bildirir veya bunun gibi bir şey.
Ancak bu, bir parça içinde "basit" bir evet-hayır diyalogu göstermek gibi basit bir görev için oldukça büyük bir karmaşa gibi görünüyor. Ayrıca, bu şekilde benim Fragment
daha az bağımsız olurum.
Bunu yapmanın daha temiz bir yolu var mı?
Düzenle:
Bu sorunun cevabı, Fragments'taki diyalogları görüntülemek için DialogFragments'ın nasıl kullanılması gerektiğini gerçekten ayrıntılı olarak açıklamıyor. Yani AFAIK, gitmenin yolu:
- Bir Parça Göster.
- Gerektiğinde, bir DialogFragment örneğini oluşturun.
- İle, orijinal Parçayı bu DialogFragment'ın hedefi olarak ayarlayın
.setTargetFragment()
. - Orijinal Parçadan .show () ile DialogFragment'ı gösterin.
- Kullanıcı bu DialogFragment üzerinde bir seçenek seçtiğinde, orijinal Fragmanı bu seçim hakkında bilgilendirin (örneğin, kullanıcı 'evet'i tıkladı), orijinal Parçanın referansını .getTarget () ile alabilirsiniz.
- DialogFragment'ı kapatın.