开发者社区> 问答> 正文

Kotlin类别名称错误

我有一个简单的kotlin文件,该文件具有一个将枚举映射到Android应用程序的Fragment类名称的函数。由于某种原因,返回的字符串始终为“ d”。

fun getClassNameForType(type: ContentOuterClass.Onboarding.ItemCase) : String? =
when(type) {
    ContentOuterClass.Onboarding.ItemCase.EMAIL -> EmailFragment::class.simpleName
    ContentOuterClass.Onboarding.ItemCase.HORIZONTAL_TWO_BUTTON -> HorizontalTwoButtonFragment::class.simpleName

    ContentOuterClass.Onboarding.ItemCase.VERTICAL_TWO_BUTTON -> VerticalTwoButtonFragment::class.simpleName

    ContentOuterClass.Onboarding.ItemCase.PRACTICE_SCHEDULE -> PracticeScheduleFragment::class.simpleName

    ContentOuterClass.Onboarding.ItemCase.SINGLE_BUTTON -> SingleButtonFragment::class.simpleName
    ContentOuterClass.Onboarding.ItemCase.SUBSCRIBE -> SubscribeFragment::class.simpleName

    else -> null
}

同样奇怪的是,当我对字符串进行硬编码时,该字符串会正确返回。我已经试过各种建议,没有运气得到的类名Java和科特林类(即qualifiedName,simpleName,::class.java.simpleName,等)。

展开
收起
Puppet 2019-12-04 09:31:56 654 0
1 条回答
写回答
取消 提交回答
  • 似乎您的班级被Proguard所迷惑,从而更改了您的班级名称。如果要防止混淆类名。您可以在proguard-rules.pro文件中添加以下行:

    -keepnames class your.package.name.ClassName {}
    
    2019-12-04 09:32:19
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载