Safe Args

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

เปิดใช้ Safe Args

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

Groovy

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

Kotlin

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.10.2"
        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 จะสร้างคลาสสำหรับปลายทางแต่ละแห่งที่การดำเนินการเริ่มต้น ชื่อคลาสที่สร้างขึ้นจะเพิ่ม "Directions" ลงในชื่อคลาสปลายทางต้นทาง เช่น หากตั้งชื่อปลายทางต้นทางว่า SpecifyAmountFragment ระบบจะตั้งชื่อคลาสที่สร้างขึ้นว่า SpecifyAmountFragmentDirections

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

ตัวอย่าง Safe Args

ตัวอย่างเช่น ลองพิจารณากราฟการนำทางที่มีการดำเนินการเดียวที่เชื่อมต่อปลายทาง 2 แห่ง ได้แก่ 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

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

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

Groovy

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

Kotlin

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.10.2"
        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 เพื่อส่งข้อมูลที่มีความปลอดภัยในการกำหนดประเภทในส่งข้อมูลระหว่างปลายทาง