Kotlin类别名称错误

时间:2019-12-02 23:31:57

标签: android android-fragments kotlin

我有一个简单的kotlin文件,其功能是将枚举映射到Android应用程序的Fragment Class名称。由于某种原因,返回的字符串始终为“ 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和kotlin类的类名(例如qualifiedNamesimpleName::class.java.simpleName等)。

1 个答案:

答案 0 :(得分:1)

似乎您的班级被Proguard所混淆,这会更改您的班级名称。如果要防止混淆类名。您可以在proguard-rules.pro文件中添加以下行:

-keepnames class your.package.name.ClassName {}