DialogFragment
, bir
oluşturma ve barındırma için tasarlanmış özel parça alt sınıfı
iletişim kutuları. Bir proje yöneticisine
iletişim kutunuzu bir parça içinde barındırmak,
FragmentManager
eyaleti yönetme
yapılandırıldığında iletişim kutusunu otomatik olarak geri yükler.
olduğunu öğrenmiştik.
DialogFragment oluşturma
DialogFragment
oluşturmak için
DialogFragment
ve
geçersiz kılma
onCreateDialog()
,
aşağıda gösterildiği gibidir.
Kotlin
class PurchaseConfirmationDialogFragment : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = AlertDialog.Builder(requireContext()) .setMessage(getString(R.string.order_confirmation)) .setPositiveButton(getString(R.string.ok)) { _,_ -> } .create() companion object { const val TAG = "PurchaseConfirmationDialog" } }
Java
public class PurchaseConfirmationDialogFragment extends DialogFragment { @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { return new AlertDialog.Builder(requireContext()) .setMessage(getString(R.string.order_confirmation)) .setPositiveButton(getString(R.string.ok), (dialog, which) -> {} ) .create(); } public static String TAG = "PurchaseConfirmationDialog"; }
Benzer
onCreateView()
onCreateDialog()
normal bir parçada bir kök View
oluşturur
görüntülenecek bir Dialog
oluşturur
DialogFragment
kapsamındadır. DialogFragment
, aşağıdakileri gösterebilir:
Dialog
, parçanın yaşam döngüsünde uygun durumlarda.
onCreateView()
öğesinde olduğu gibi, Dialog
öğesinin herhangi bir alt sınıfını döndürebilirsiniz
onCreateDialog()
tarafından sunulmaktadır ve kullanımla sınırlı değildir
AlertDialog
.
DialogFragment'ı göster
Aşağıdaki işlemler için manuel olarak FragmentTransaction
oluşturmanız gerekmez:
DialogFragment
gösterilmelidir. Bunun yerine, show()
yöntemini kullanarak
iletişim kutusu görüntülenir. Bir FragmentManager
öğesine referans aktarabilirsiniz
ve FragmentTransaction
etiketi olarak kullanılacak bir String
.
Oluştururken
Fragment
içindeki bir DialogFragment
için parçanın
durumu düzgün şekilde geri yüklemek için alt FragmentManager
yapılandırma değişikliklerinden sonra. Null olmayan bir etiket,
DialogFragment
öğesini daha sonra almak için findFragmentByTag()
.
Kotlin
// From another Fragment or Activity where you wish to show this // PurchaseConfirmationDialogFragment. PurchaseConfirmationDialogFragment().show( childFragmentManager, PurchaseConfirmationDialog.TAG)
Java
// From another Fragment or Activity where you wish to show this // PurchaseConfirmationDialogFragment. new PurchaseConfirmationDialogFragment().show( getChildFragmentManager(), PurchaseConfirmationDialog.TAG);
üzerinde daha fazla kontrol
FragmentTransaction
URL adresini
show()
mevcut bir FragmentTransaction
ile aşırı yüklenme
DialogFragment yaşam döngüsü
DialogFragment
, standart parça yaşam döngüsünü izler.
birçok ek yaşam döngüsü geri çağırması içerir. En
yaygın olanları şunlardır:
onCreateDialog()
: parçaya birDialog
sağlamak için bu geri çağırmayı geçersiz kılın ve görüntüleyebilirsiniz.onDismiss()
: aşağıdaki işlemler için özel mantık gerçekleştirmeniz gerekirse bu geri çağırmayıDialog
aboneliğiniz kapatılır (ör. kaynak serbest bırakma veya abonelikten çıkma) sağlayabilir.onCancel()
:Dialog
iptal edildi.
DialogFragment
, iptal edilebilirliği kapatma veya ayarlama yöntemleri de içerir
DialogFragment
için:
dismiss()
: parçayı ve iletişim kutusunu kapatın. Parça, bu girişe kadarki tüm arka yığın durumları pop-up ile açılır. Aksi takdirde, parçayı kaldırmak için yeni bir işlem yapılır.setCancelable()
: gösterilenDialog
işleminin iptal edilebilir olup olmadığını kontrol eder. Bu yöntemi kullan doğrudan telefon etmek yerineDialog.setCancelable(boolean)
.
Geçersiz kılmazsanız
onCreateView()
veya
onViewCreated()
(Dialog
) ile DialogFragment
kullanırken. İletişim kutuları
kendi pencereleri vardır. Bu nedenle,
onCreateView()
Ayrıca, onViewCreated()
hiçbir zaman
özel DialogFragment
, onCreateView()
ve
boş olmayan bir görünüm sağladı.
Özel görünümleri kullanma
Bir DialogFragment
oluşturabilir ve geçersiz kılarak bir iletişim kutusu görüntüleyebilirsiniz
onCreateView()
Tipik bir parçada olduğu gibi bir layoutId
verebilir veya
DialogFragment
oluşturucu.
View
, onCreateView()
tarafından iade edildi
otomatik olarak iletişim kutusuna eklenir. Çoğu durumda bu, sizin için
geçersiz kılmaya gerek yoktur
onCreateDialog()
Varsayılan boş iletişim kutusu görünümünüzle doldurulduğundan emin olun.
DialogFragment
öğesinin belirli alt sınıfları; örneğin
BottomSheetDialogFragment
,
görüntünüzü alt sayfa stilinde bir iletişim kutusuna yerleştirebilirsiniz.