Hedefler arasında gezinmenin önerilen yolu Safe Args Gradle eklentisini kullanmaktır. Bu eklenti, hedefler arasında tür açısından güvenli gezinmeyi sağlayan nesne ve derleyici sınıfları oluşturur. Hedefler arasında veri aktarmak ve gezinmek için Güvenli Değişkenler'i kullanın.
Güvenli Arg'ları etkinleştir
Güvenli Aramalar'ı projenize eklemek için üst düzey build.gradle
dosyanıza aşağıdaki classpath
öğesini ekleyin:
Modern
buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.7.7" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Ayrıca, mevcut iki eklentiden birini uygulamanız gerekir.
Java'ya veya karma Java ve Kotlin modüllerine uygun Java dili kodu oluşturmak için şu satırı uygulamanızın veya modülünüzün build.gradle
dosyasına ekleyin:
Modern
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternatif olarak, yalnızca Kotlin modüllerine uygun Kotlin kodu oluşturmak için şunu ekleyin:
Modern
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
AndroidX'e Taşıma uyarınca gradle.properties
dosyanızda android.useAndroidX=true
bulunmalıdır.
Oluşturulan kod
Güvenli Anahtarlar'ı etkinleştirdikten sonra, oluşturulan kodunuz, tanımladığınız her işlem için sınıf ve yöntemlerin yanı sıra her bir gönderme ve alma hedefine karşılık gelen sınıfları içerir.
Güvenli Args, bir işlemin kaynaklandığı her hedef için bir sınıf oluşturur. Oluşturulan sınıf adı, kaynak hedef sınıf adına "Yol Tarifi" ekler. Örneğin, kaynak hedefin adı SpecifyAmountFragment
ise oluşturulan sınıfın adı SpecifyAmountFragmentDirections
olur.
Oluşturulan sınıf, kaynak hedefte tanımlanan her işlem için statik bir yöntem içerir. Bu yöntem, tanımlanmış tüm işlem parametrelerini bağımsız değişken olarak alır ve doğrudan navigate()
öğesine iletebileceğiniz bir NavDirections
nesnesi döndürür.
Güvenli Args örneği
Örneğin, SpecifyAmountFragment
ve ConfirmationFragment
olmak üzere iki hedefi birbirine bağlayan tek bir işlem içeren bir gezinme grafiği ele alalım. ConfirmationFragment
, işlem kapsamında sağladığınız tek bir float
parametresini alır.
Güvenli Args, tek bir yöntem (actionSpecifyAmountFragmentToConfirmationFragment()
) ve ActionSpecifyAmountFragmentToConfirmationFragment
adlı bir iç sınıf ile bir SpecifyAmountFragmentDirections
sınıfı oluşturur. İç sınıf, NavDirections
parametresinden türetilir ve ilişkili işlem kimliği ile float
parametresini depolar. Döndürülen NavDirections
nesnesi, daha sonra aşağıdaki örnekte gösterildiği gibi doğrudan navigate()
öğesine geçirilebilir:
Kotlin
override fun onClick(v: View) {
val amount: Float = ...
val action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount)
v.findNavController().navigate(action)
}
Java
@Override
public void onClick(View view) {
float amount = ...;
action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount);
Navigation.findNavController(view).navigate(action);
}
Güvenli Arg'ları kullanarak hedefler arasında veri geçirme hakkında daha fazla bilgi için Tür güvenliği ile veri aktarmak için Güvenli Arg'ları kullanma bölümüne bakın.
Güvenli Aramalar kullanarak tür güvenliğini sağlayın
Safe Args Gradle eklentisini kullanarak hedefler arasında gezinin. Bu eklenti, tür güvenli gezinme ve hedefler arasında bağımsız değişken aktarımı sağlayan basit nesne ve derleyici sınıfları oluşturur.
Güvenli Aramalar'ı projenize eklemek için üst düzey build.gradle
dosyanıza aşağıdaki classpath
öğesini ekleyin:
Modern
buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.7.7" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Ayrıca, mevcut iki eklentiden birini uygulamanız gerekir.
Java'ya veya karma Java ve Kotlin modüllerine uygun Java dili kodu oluşturmak için şu satırı uygulamanızın veya modülünüzün build.gradle
dosyasına ekleyin:
Modern
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternatif olarak, yalnızca Kotlin modüllerine uygun Kotlin kodu oluşturmak için şunu ekleyin:
Modern
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
AndroidX'e Taşıma uyarınca gradle.properties
dosyanızda android.useAndroidX=true
bulunmalıdır.
Güvenli Arg'ları etkinleştirdikten sonra eklenti, tanımladığınız her işlem için sınıflar ve yöntemler içeren kod oluşturur. Safe Args, her işlemde işlemin kaynaklandığı hedef olan her kaynak hedef için bir sınıf da oluşturur. Oluşturulan sınıf adı, kaynak hedef sınıf adı ile "Yol Tarifi" kelimesinin birleşimidir. Örneğin, hedefe SpecifyAmountFragment
adı verilirse oluşturulan sınıfın adı SpecifyAmountFragmentDirections
olur. Oluşturulan sınıf, kaynak hedefte tanımlanan her işlem için statik bir yöntem içerir. Bu yöntem, tanımlı tüm işlem parametrelerini bağımsız değişken olarak alır ve navigate()
işlevine iletebileceğiniz bir NavDirections
nesnesi döndürür.
Örneğin, SpecifyAmountFragment
kaynak hedefini bir alıcı hedefine (ConfirmationFragment
) bağlayan tek bir işlem içeren bir gezinme grafiğimiz olduğunu varsayalım.
Güvenli Aramalar, tek bir yöntem olan actionSpecifyAmountFragmentToConfirmationFragment()
ile bir SpecifyAmountFragmentDirections
sınıfı oluşturur. Bu yöntem, NavDirections
nesnesi döndürür. Bu döndürülen NavDirections
nesnesi, daha sonra aşağıdaki örnekte gösterildiği gibi doğrudan navigate()
öğesine iletilebilir:
Kotlin
override fun onClick(view: View) { val action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment() view.findNavController().navigate(action) }
Java
@Override public void onClick(View view) { NavDirections action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment(); Navigation.findNavController(view).navigate(action); }
Güvenli Arg'ları kullanarak hedefler arasında veri geçirme hakkında daha fazla bilgi için Hedefler arasında veri iletme bölümündeki Tür güvenliği ile veri aktarmak için Güvenli Arg'ları kullanma bölümüne bakın.