我有一个扩展方法:
fun StoresClientFragment?.onClickButtonBack(){
this?.listener?.onStoresFragmentClickBtnMenu()
}
应用程序安装没有任何错误;但是当在运行时调用该方法时,它会给出以下错误:
java.lang.NoSuchMethodError:没有静态方法在点击按钮返回(Lcom/app/common_client/ui/fragment/stores/StoresClientFragment;)类Lcom/应用程序/公共客户端/公共/公共应用程序类型组Kt中的V;或其超类("com. app. common_client. commons. CommonsAppTypeGroupKt"的声明出现在/data/app/com. myapp. client-DWp0y3iNC3tsmBZkowlpfw = =/base. apk!类2.dex中)。
我启用了多联
在Gradle版本中
android {
defaultConfig {
multiDexEnabled = true
}
}
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
}
在应用程序类中
class ApplicationClient : MultiDexApplication(){
}
在宣言中
<application
android:name=".commons.application.ApplicationClient"
- 注意:我使用的是产品风味和模块,该方法位于某些产品风味共享的src中**
sourceSets {
flavorA {
java.srcDirs + = "src/sharedFolder/java" //here is 'onClickButtonBack' method
}
flavorB {
java.srcDirs + = "src/sharedFolder/java"
}
}
3条答案
按热度按时间kd3sttzy1#
Build -> Rebuild Project
帮了我,好像是Android Studio代码缓存的bug6psbrbz92#
我已经解决了这个问题,但是我不知道为什么,我做的唯一一件事就是改变方法所在的文件名。
我的文件.kt由我的新文件.kt创建
我希望它能帮助正在经历同样事情的人,我也想如果有人知道为什么这样做有效,分享它,谢谢
rm5edbpk3#
我在我的案例中解决了这个问题,因为我改变了它试图从中获取方法的文件的包。
我的设置是2个Kotlin模块(A依赖于B)。两者都有相同的包名和类。当我试图从A使用B.method()时,它似乎试图调用A.method()。
我不是这方面的Maven我注意到了