首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在空对象引用上调用虚拟方法的android.graphics.drawable.Drawable android.graphics.drawable.Drawable

尝试在空对象引用上调用虚拟方法的android.graphics.drawable.Drawable android.graphics.drawable.Drawable
EN

Stack Overflow用户
提问于 2022-04-03 14:15:43
回答 1查看 787关注 0票数 0

在某些设备上,我会崩溃,而在大多数设备上,一切正常,谁能解释这种异常的原因以及如何修复呢?

我的代码:

代码语言:javascript
复制
private fun onGetBatteryApps() {
        mBatteryAppsBinding.batteryAnim.playAnimation()
        val pm: PackageManager = requireActivity().packageManager
        val apps: List<PackageInfo> = requireActivity().packageManager.getInstalledPackages(
            PackageManager.GET_META_DATA)

        val rem = apps.filter { pm.getLaunchIntentForPackage(it.packageName) != null && it.packageName != BuildConfig.APPLICATION_ID}

        var j = 0
        timer = object : CountDownTimer(300, 300) {
            override fun onTick(millisUntilFinished: Long) {}
            override fun onFinish() {
                if (rem[j].packageName != BuildConfig.APPLICATION_ID) {
                    mBatteryAppsBinding.appName.text =
                        activity?.application?.packageManager?.let {rem[j].applicationInfo.loadLabel(it).toString()
                        }
                    if (rem[j].applicationInfo.loadIcon(activity?.application?.packageManager) != null) {
                        mBatteryAppsBinding.appIcon.setImageDrawable(rem[j].applicationInfo.loadIcon(activity?.application?.packageManager))
                    } else {
                        mBatteryAppsBinding.appIcon.setImageDrawable(resources.getDrawable(R.drawable.ic_android_white_24dp))
                    }
                    j++
                    if (j == rem.size - 1) j = 0
                    start()
                }

            }

        }.start()
    }

我的日志:

代码语言:javascript
复制
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.content.pm.PackageManager.loadItemIcon(android.content.pm.PackageItemInfo, android.content.pm.ApplicationInfo)' on a null object reference
       at android.content.pm.PackageItemInfo.loadIcon(PackageItemInfo.java:269)
       at com.myapplication.applicationname.view.fragment.BatteryAppsFragment$onGetBatteryApps$1.onFinish(BatteryAppsFragment.java:2)
       at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:127)
       at android.os.Handler.dispatchMessage(Handler.java:110)
       at android.os.Looper.loop(Looper.java:219)
       at android.app.ActivityThread.main(ActivityThread.java:8393)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

根据Crashlytics中的数据,这可以发生在任何设备和Android版本上。

EN

回答 1

Stack Overflow用户

发布于 2022-04-03 16:26:29

如果您的应用程序在设备低SDK (如Lollipop )方面有问题,那么我就有解决方案了。您需要从您的.png复制所有图像( drawable ),并将它们粘贴到drawable v24中。希望能帮上忙。如果你有什么问题。让我知道

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71726712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档