问题描述
fun StoresClientFragment?.onClickButtonBack(){
this?.listener?.onStoresFragmentClickBtnMenu()
}
应用安装没有任何错误;但是在运行时调用该方法时,它给了我以下错误:
java.lang.NoSuchMethodError: onClickButtonBack 没有静态方法 (Lcom/app/common_client/ui/fragment /stores/StoresClientFragment;) V 在类 Lcom/app/common_client/commons/CommonsAppTypeGroupKt;或其 超类(声明 'com.app.common_client.commons.CommonsAppTypeGroupKt'出现在 /data/app/com.myapp.client-DWp0y3iNC3tsmBZkowlpfw==/base.apk!classes2.dex).
我启用了 multidex
在 build.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"
}
}
解决方法
我已经解决了,但我不知道为什么,我唯一做的就是更改方法所在的文件名。
MyNewFile.kt 的 MyFile.kt
fun StoresClientFragment? .onClickButtonBack () {
this? .listener? .onStoresFragmentClickBtnMenu ()
}
我希望它可以帮助遇到同样事情的人,如果有人知道为什么有效,我也想分享一下,谢谢