Safe Args

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

เปิดใช้ Safe Args

如需将 Safe Args 添加到您的项目,请在顶层 build.gradle 文件中包含以下 classpath

Groovy

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

Kotlin

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

您还必须应用以下两个可用插件之一。

如需生成适用于 Java 模块或 Java 和 Kotlin 混合模块的 Java 语言代码,请将以下行添加到应用或模块build.gradle 文件中:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

此外,如需生成仅适用于 Kotlin 模块的 Kotlin 语言代码,请添加以下行:

Groovy

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

Kotlin

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

根据迁移到 AndroidX 文档,您的 gradle.properties 文件中必须具有 android.useAndroidX=true

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

หลังจากเปิดใช้ 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 ปลั๊กอินนี้จะสร้างคลาสออบเจ็กต์และเครื่องมือสร้างที่ เปิดใช้การนำทางที่ปลอดภัยตามประเภทและการส่งอาร์กิวเมนต์ระหว่างปลายทาง

如需将 Safe Args 添加到您的项目,请在顶层 build.gradle 文件中包含以下 classpath

Groovy

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

Kotlin

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

您还必须应用以下两个可用插件之一。

如需生成适用于 Java 模块或 Java 和 Kotlin 混合模块的 Java 语言代码,请将以下行添加到应用或模块build.gradle 文件中:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

此外,如需生成仅适用于 Kotlin 模块的 Kotlin 语言代码,请添加以下行:

Groovy

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

Kotlin

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

根据迁移到 AndroidX 文档,您的 gradle.properties 文件中必须具有 android.useAndroidX=true

หลังจากที่คุณเปิดใช้ 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 เพื่อส่งข้อมูลที่มีประเภทความปลอดภัยในส่งข้อมูลระหว่าง ปลายทาง