android - 使用导航组件安全参数将枚举作为参数传递给 fragment 的正确方法是什么

标签 android android-architecture-navigation

documentation讨论如何发送简单的整数和字符串。例如:

<argument
    android:name="myIntArg"
    android:defaultValue="255"
    app:argType="integer" />

在原始 fragment 中:
val action = OriginFragmentDirections.myAction(myInt)
findNavController().navigate(action)

在目标 fragment 中:
val receivedInt = DestinationFragmentArgs.fromBundle(arguments).myIntArg

但是说而不是myIntArg ,我想发送一个枚举( myEnumArg )。我该怎么做?什么 app:argType 我会在我的论点中使用吗?

最佳答案

编辑:根据 Navigation 1.0.0-alpha08 release notes :

Safe Args supports Serializable objects, including Enum values. Enum types can set a default value by using the enum literal without the class name (e.g. app:defaultValue="READ") b/111316353



所以现在这是可能的 - 您可以使用 Enum 类的名称(即 com.example.EnumClass )或相对名称( .EnumClass ),它会自动将您的应用程序包名称添加到类名称之前。

上一个答案:

当前版本的 Navigation (1.0.0-alpha07) 无法做到这一点,但 existing feature request被标记为固定,使用枚举作为参数的能力将在 alpha08 中可用

关于android - 使用导航组件安全参数将枚举作为参数传递给 fragment 的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53545518/

相关文章:

android - 使用 SimpleDateFormat 格式化日期时出现 NullPointerException

android - Jetpack 导航 : Title and back/up arrow in the action bar?

android - 为什么我的 fragment 没有显示在导航 Controller 中?

Android Studio 支持库的用途

java - 如何在 Open GL 更新线程中运行处理程序到 UI 线程

java - 单个 mangedQuery 扫描多个文件夹中的音频文件

java - 在Java中合并两个类?

android - 导航架构组件 - 带有 lambda 表达式的 Action 导航

android - 为什么Android导航组件屏幕不会回到上一个Fragment,而是调用上一个Fragment的onViewCreated中的一个方法?

android - 无法解析 : fragment after adding navigation