【问题标题】:NoClassDefFoundError with the ?.let{} block in KotlinKotlin 中带有 ?.let{} 块的 NoClassDefFoundError
【发布时间】:2018-08-11 08:19:35
【问题描述】:

我不知道为什么会出现以下错误:

E/UncaughtException: java.lang.NoClassDefFoundError: 解析失败 的: Lcom/somecompany/someapp/common/glide/GlideWrapper$loadCircularProfileImg$1$1; 在 com.somecompany.someapp.common.glide.GlideWrapper.loadCircularProfileImg(GlideWrapper.kt:31) 在 com.somecompany.someapp.main.MainActivity.showSideBarProfPhoto(MainActivity.kt:179) 在 com.somecompany.someapp.main.MainActivity.onCreate(MainActivity.kt:115) 在 android.app.Activity.performCreate(Activity.java:6955) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) 在 android.app.ActivityThread.-wrap14(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6776) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

用代码:

fun loadCircularProfileImg(ctx: Context, user: User?, targetImageView: ImageView) {

        user?.let {
            // With let getting a NoClassDefFoundError error ????

            GlideApp.with(ctx)
                    .asBitmap()
                    .load(FirebaseStorage.getInstance().reference.child(it.profImgUrl))
                    .into(object : BitmapImageViewTarget(targetImageView) {
                        override fun setResource(resource: Bitmap?) {
                            // Will add code here
                        }
                    })
        }
    }

但不是:

fun loadCircularProfileImg(ctx: Context, user: User?, targetImageView: ImageView) {

    if (user != null) {   // With this the code works

        GlideApp.with(ctx)
                .asBitmap()
                .load(FirebaseStorage.getInstance().reference.child(user.profImgUrl))
                .into(object : BitmapImageViewTarget(targetImageView) {
                    override fun setResource(resource: Bitmap?) {
                        // Will add code here
                    }
                })
    }
}

【问题讨论】:

标签: android kotlin android-glide kotlin-null-safety


【解决方案1】:

当您调用 loadCircularProfileImg 时,定义用户类时,我调用了相同的方法,并且没有收到如下所示的任何错误...

        loadCircularProfileImg(this,User(),imageview)

我在上面的代码中使用过,没有出现任何错误。

【讨论】:

    【解决方案2】:

    这是由 Kotlin bug 引起的,在 1.5.0 版中已修复。

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2023-03-21
      • 2015-06-25
      • 2022-08-02
      • 1970-01-01
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多