Hel*_*oCW 4 kotlin android-studio
以下代码来自https://github.com/mycwcgr/camera/tree/master/CameraXBasic中的项目
该项目使用最新的导航框架,我发现有一些保留的类名,例如CameraFragmentDirections,GalleryFragmentArgs。
系统没有有关这些类名称的提示信息,我是否必须自己记住这些关键字?
码
/** Method used to re-draw the camera UI controls, called every time configuration changes */
@SuppressLint("RestrictedApi")
private fun updateCameraUi() {
// Listener for button used to view last photo
controls.findViewById<ImageButton>(R.id.photo_view_button).setOnClickListener {
Navigation.findNavController(requireActivity(), R.id.fragment_container).navigate(
CameraFragmentDirections.actionCameraToGallery(outputDirectory.absolutePath))
}
}
/** Fragment used to present the user with a gallery of photos taken */
class GalleryFragment internal constructor() : Fragment() {
/** AndroidX navigation arguments */
private val args: GalleryFragmentArgs by navArgs()
}
Run Code Online (Sandbox Code Playgroud)
不,如果您知道一个窍门,则无需自己记住这些事情。
例如,如果您不记得“ keyword” Directions,但是您知道要执行与相关的操作CameraFragment,则可以CameraFragm在Android Studio中开始输入。然后,它会建议CameraFragment,并CameraFragmentDirections为您服务。这样,CameraFragmentDirections即使您不记得关键字,也可以轻松找到Directions。
虽然没有太多的关键字要担心。在使用导航框架一段时间后,您将记住所有这些内容。
如果您好奇,可以在构建后在此处找到生成的类:
./app/build/generated/source/navigation-args/...
Run Code Online (Sandbox Code Playgroud)
例如在调试构建后:
./app/build/generated/source/navigation-args/debug/com/android/example/cameraxbasic/fragments/CameraFragmentDirections.java
Run Code Online (Sandbox Code Playgroud)
如果您更好奇,可以在这里生成这些类的代码:https : //android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-master-dev/navigation/navigation-safe- args-generator / src / main / kotlin / androidx / navigation / safe / args / generator / java / JavaNavWriter.kt
例如,您可以在其中找到以下代码:
internal fun Destination.toClassName(): ClassName {
val destName = name ?: throw IllegalStateException("Destination with actions must have name")
return ClassName.get(destName.packageName(), "${destName.simpleName()}Directions")
}
Run Code Online (Sandbox Code Playgroud)
这是决定CameraFragmentDirections获得什么名字的代码。(最后请注意"${destName.simpleName()}Directions"。)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |