Safe Args

วิธีที่แนะนำในการไปยังปลายทางต่างๆ คือการใช้ Safe Args ปลั๊กอิน Gradle ปลั๊กอินนี้จะสร้างคลาสออบเจ็กต์และเครื่องมือสร้างที่ช่วยให้ การนำทางอย่างปลอดภัยระหว่างปลายทางต่างๆ ใช้ Args ที่ปลอดภัยสำหรับ การนำทางและการส่งข้อมูลระหว่างปลายทาง

เปิดใช้ Safe Args

To add Safe Args to your project, include the following classpath in your top level build.gradle file:

Groovy

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.9.7"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

Kotlin

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.9.7"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

You must also apply one of two available plugins.

To generate Java language code suitable for Java or mixed Java and Kotlin modules, add this line to your app or module's build.gradle file:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs")
}

Alternatively, to generate Kotlin code suitable for Kotlin-only modules add:

Groovy

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

You must have android.useAndroidX=true in your gradle.properties file as per Migrating to AndroidX.

โค้ดที่สร้างขึ้น

หลังจากเปิดใช้ Safe Args แล้ว โค้ดที่สร้างขึ้นจะมีคลาสและเมธอดสำหรับ การดำเนินการแต่ละรายการที่คุณกำหนด รวมถึงคลาสที่สอดคล้องกับการส่งแต่ละครั้ง และปลายทางที่จะรับ

ทั้งนี้ Safe Args จะสร้างคลาสสำหรับปลายทางแต่ละรายการที่เกิดการกระทำ ชื่อคลาสที่สร้างขึ้นจะเพิ่ม "เส้นทาง" ไปยังคลาสปลายทางต้นทาง ชื่อ เช่น ถ้าปลายทางต้นทางมีชื่อ SpecifyAmountFragment ชื่อคลาสที่สร้างขึ้น SpecifyAmountFragmentDirections

คลาสที่สร้างขึ้นมีวิธีแบบคงที่สำหรับการดำเนินการแต่ละข้อที่กำหนดไว้ใน ปลายทางต้นทาง เมธอดนี้จะใช้พารามิเตอร์การดำเนินการที่กำหนดไว้เป็น อาร์กิวเมนต์และแสดงผลออบเจ็กต์ NavDirections ที่คุณส่งได้โดยตรง เป็น navigate()

ตัวอย่าง Args ที่ปลอดภัย

ตัวอย่างเช่น ลองพิจารณากราฟการนำทางที่มีการกระทำเดียวที่เชื่อมโยงถึงสอง ปลายทาง SpecifyAmountFragment และ ConfirmationFragment ConfirmationFragment จะใช้พารามิเตอร์ float รายการเดียวที่คุณระบุ ของการดำเนินการ

ทั้งนี้ Safe Args จะสร้างคลาส SpecifyAmountFragmentDirections ที่มีรายการเดียว เมธอด, actionSpecifyAmountFragmentToConfirmationFragment() และอินเตอร์เน็ต ชื่อ ActionSpecifyAmountFragmentToConfirmationFragment โครงสร้างภายใน ได้มาจาก NavDirections และจัดเก็บรหัสการดำเนินการที่เชื่อมโยงและ พารามิเตอร์ float สามารถส่งผ่านออบเจ็กต์ NavDirections ที่แสดงผลไปแล้ว ไปยัง navigate() โดยตรง ดังที่แสดงในตัวอย่างต่อไปนี้

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);
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการส่งข้อมูลระหว่างปลายทางด้วย Safe Args ได้ที่ ใช้ Safe Args เพื่อส่งข้อมูลด้วยประเภทความปลอดภัย

ตรวจสอบความปลอดภัยของประเภทโดยใช้ Safe Args

นำทางระหว่างปลายทางโดยใช้ Safe Args ปลั๊กอิน Gradle ปลั๊กอินนี้จะสร้างคลาสออบเจ็กต์และเครื่องมือสร้างที่ เปิดใช้การนำทางที่ปลอดภัยตามประเภทและการส่งอาร์กิวเมนต์ระหว่างปลายทาง

To add Safe Args to your project, include the following classpath in your top level build.gradle file:

Groovy

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.9.7"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

Kotlin

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.9.7"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

You must also apply one of two available plugins.

To generate Java language code suitable for Java or mixed Java and Kotlin modules, add this line to your app or module's build.gradle file:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs")
}

Alternatively, to generate Kotlin code suitable for Kotlin-only modules add:

Groovy

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

You must have android.useAndroidX=true in your gradle.properties file as per Migrating to AndroidX.

หลังจากที่คุณเปิดใช้ Safe Args แล้ว ปลั๊กอินจะสร้างโค้ดที่มีคลาสและ สำหรับแต่ละการดำเนินการที่คุณกำหนดไว้ สำหรับการดำเนินการแต่ละรายการ Safe Args ยัง สร้างคลาสสำหรับปลายทางต้นทางแต่ละรายการ ซึ่งเป็นปลายทาง จุดเริ่มต้นของการทำงาน ชื่อคลาสที่สร้างขึ้นเป็นชุดค่าผสมของ ชื่อคลาสของปลายทางต้นทางและคำว่า "เส้นทาง" ตัวอย่างเช่น หากปลายทางชื่อ SpecifyAmountFragment คลาสที่สร้างขึ้นจะเป็น ชื่อ SpecifyAmountFragmentDirections คลาสที่สร้างขึ้นมี สำหรับแต่ละการดำเนินการที่กำหนดไว้ในปลายทางต้นทาง วิธีนี้ใช้เวลา พารามิเตอร์การดำเนินการที่กำหนดเป็นอาร์กิวเมนต์และแสดงผลออบเจ็กต์ NavDirections ที่คุณสามารถส่งไปยัง navigate()

ตัวอย่างเช่น สมมติว่าเรามีกราฟการนำทางที่มีการกระทำเดียวที่ เชื่อมต่อปลายทางต้นทาง SpecifyAmountFragment กับปลายทาง ปลายทาง ConfirmationFragment

ทั้งนี้ Safe Args จะสร้างคลาส SpecifyAmountFragmentDirections ที่มีรายการเดียว actionSpecifyAmountFragmentToConfirmationFragment() ซึ่งแสดงผล ออบเจ็กต์ NavDirections รายการ ออบเจ็กต์ NavDirections ที่แสดงผลนี้สามารถส่งผ่านได้ ไปยัง navigate() โดยตรง ดังที่แสดงในตัวอย่างต่อไปนี้

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);
}

ดูข้อมูลเพิ่มเติมเกี่ยวกับการส่งข้อมูลระหว่างปลายทางด้วย Safe Args ได้ที่ ใช้ Safe Args เพื่อส่งข้อมูลที่มีประเภทความปลอดภัยในส่งข้อมูลระหว่าง ปลายทาง