AndroidRuntime: java.lang.NullPointerException: 尝试在空对象引用上调用虚拟方法

huangapple 未分类评论44阅读模式
标题翻译

AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference

问题

我试图在我的ROM的快速设置面板中添加一个显示数据使用情况的方法来源于https://github.com/Extended-UI/android_frameworks_base/commit/ca5707055fc7ba516ab93fd128291264b0332825

但是系统界面SystemUI一直崩溃以下是日志

    03-16 20:04:37.311  2297  2297 E AndroidRuntime: FATAL EXCEPTION: main
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: Process: com.android.systemui, PID: 2297
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: java.lang.NullPointerException: 尝试调用空对象引用的虚拟方法 'float com.android.systemui.statusbar.phone.PanelView.getExpandedFraction()'
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.statusbar.phone.StatusBar.updateBlurVisibility(StatusBar.java:1127)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.statusbar.phone.StatusBar.updateIsKeyguard(StatusBar.java:3308)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.statusbar.phone.StatusBar.access$1600(StatusBar.java:264)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.statusbar.phone.StatusBar$15.onStartedWakingUp(StatusBar.java:4008)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.keyguard.-$$Lambda$TPhVA13qrDBGFKbgQpRNBPBvAqI.accept(Unknown Source:2)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.keyguard.Lifecycle.dispatch(Lifecycle.java:39)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.keyguard.WakefulnessLifecycle.dispatchStartedWakingUp(WakefulnessLifecycle.java:68)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.keyguard.KeyguardLifecyclesDispatcher$1.handleMessage(KeyguardLifecyclesDispatcher.java:67)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:107)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:214)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7355)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
    03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)

我使用的代码如下

    public void updateBlurVisibility() {
    
        int QSBlurAlpha = Math.round(255.0f * mStaticNotificationPanel.getExpandedFraction());
    
        if (QSBlurAlpha > 0 && !dataupdated && !mIsKeyguard) {
            DataUsageView.updateUsage();
            dataupdated = true;
        }
    
        if (QSBlurAlpha > 0 && !blurperformed && !mIsKeyguard && isQSBlurEnabled()) {
            Bitmap bittemp = ImageUtilities.blurImage(mContext, ImageUtilities.screenshotSurface(mContext));
            Drawable blurbackground = new BitmapDrawable(mContext.getResources(), bittemp);
            blurperformed = true;
            mQSBlurView.setBackgroundDrawable(blurbackground);
        } else if (QSBlurAlpha == 0 || mState == StatusBarState.KEYGUARD) {
            blurperformed = false;
            dataupdated = false;
            mQSBlurView.setBackgroundColor(Color.TRANSPARENT);
        }
        mQSBlurView.setAlpha(QSBlurAlpha);
        mQSBlurView.getBackground().setAlpha(QSBlurAlpha); 
    }

我可能如何纠正这个问题呢
英文翻译

So i was trying to add a method that will display data usage in the QS panel of my ROM from: https://github.com/Extended-UI/android_frameworks_base/commit/ca5707055fc7ba516ab93fd128291264b0332825

But the systemUI kept crashing. Here is the log:

03-16 20:04:37.311  2297  2297 E AndroidRuntime: FATAL EXCEPTION: main
03-16 20:04:37.311  2297  2297 E AndroidRuntime: Process: com.android.systemui, PID: 2297
03-16 20:04:37.311  2297  2297 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'float com.android.systemui.statusbar.phone.PanelView.getExpandedFraction()' on a null object reference
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.statusbar.phone.StatusBar.updateBlurVisibility(StatusBar.java:1127)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.statusbar.phone.StatusBar.updateIsKeyguard(StatusBar.java:3308)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.statusbar.phone.StatusBar.access$1600(StatusBar.java:264)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.statusbar.phone.StatusBar$15.onStartedWakingUp(StatusBar.java:4008)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.keyguard.-$$Lambda$TPhVA13qrDBGFKbgQpRNBPBvAqI.accept(Unknown Source:2)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.keyguard.Lifecycle.dispatch(Lifecycle.java:39)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.keyguard.WakefulnessLifecycle.dispatchStartedWakingUp(WakefulnessLifecycle.java:68)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.systemui.keyguard.KeyguardLifecyclesDispatcher$1.handleMessage(KeyguardLifecyclesDispatcher.java:67)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:107)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:214)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7355)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
03-16 20:04:37.311  2297  2297 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)

The code that i used is here

public void updateBlurVisibility() {

    int QSBlurAlpha = Math.round(255.0f * mStaticNotificationPanel.getExpandedFraction());

    if (QSBlurAlpha > 0 && !dataupdated && !mIsKeyguard) {
        DataUsageView.updateUsage();
        dataupdated = true;
    }

    if (QSBlurAlpha > 0 && !blurperformed && !mIsKeyguard && isQSBlurEnabled()) {
        Bitmap bittemp = ImageUtilities.blurImage(mContext, ImageUtilities.screenshotSurface(mContext));
        Drawable blurbackground = new BitmapDrawable(mContext.getResources(), bittemp);
        blurperformed = true;
        mQSBlurView.setBackgroundDrawable(blurbackground);
    } else if (QSBlurAlpha == 0 || mState == StatusBarState.KEYGUARD) {
        blurperformed = false;
        dataupdated = false;
        mQSBlurView.setBackgroundColor(Color.TRANSPARENT);
    }
    mQSBlurView.setAlpha(QSBlurAlpha);
    mQSBlurView.getBackground().setAlpha(QSBlurAlpha); 
}

What i can possibly do to correct it?

huangapple
  • 本文由 发表于 2020年3月16日 23:08:55
  • 转载请务必保留本文链接:https://java.coder-hub.com/60708435.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定