dji-sdk / Mobile-UXSDK-Beta-Android

Mobile Android UXSDK Beta
MIT License
97 stars 55 forks source link

TopBarPanelWidget crashes app on SmartController #53

Closed bbenson09 closed 2 years ago

bbenson09 commented 2 years ago

Hi, I'm getting the following error whenever I try to use the TopBarPanelWidget.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.flyby.pilot, PID: 9846
    java.lang.NullPointerException: Attempt to invoke interface method 'boolean dji.ux.beta.core.base.GlobalPreferencesInterface.isAirSenseTermsNeverShown()' on a null object reference
        at dji.ux.beta.core.widget.airsense.AirSenseWidget.showWarningDialog(:282)
        at dji.ux.beta.core.widget.airsense.AirSenseWidget.updateAirSenseWarningLevel(:248)
        at dji.ux.beta.core.widget.airsense.AirSenseWidget.access$updateAirSenseWarningLevel(:91)
        at dji.ux.beta.core.widget.airsense.AirSenseWidget$reactToModelChanges$1.accept(:231)
        at dji.ux.beta.core.widget.airsense.AirSenseWidget$reactToModelChanges$1.accept(:91)
        at dji.thirdparty.io.reactivex.internal.subscribers.LambdaSubscriber.onNext()
        at dji.thirdparty.io.reactivex.internal.operators.flowable.FlowableObserveOn$ObserveOnSubscriber.runAsync()
        at dji.thirdparty.io.reactivex.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run()
        at dji.thirdparty.io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run()
        at android.os.Handler.handleCallback(Handler.java:755)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:167)
        at android.app.ActivityThread.main(ActivityThread.java:6240)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1000)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:868)
E/fdd: runMethod: null

The element is being used in my activity_main.xml as such:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app= "http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:layout_gravity="center"
    android:layout_centerHorizontal="true"
    tools:context=".MainActivity">

    <dji.ux.beta.core.panelwidget.topbar.TopBarPanelWidget
        android:id="@+id/panel_top_bar"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@color/black"
        app:layout_constraintHeight_percent="0.08"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

     [...]

</androidx.constraintlayout.widget.ConstraintLayout>

Am I doing something incorrectly or is this a bug?

From my build.gradle:

minSdkVersion: 19 targetSdkVersion: 30 implementation 'com.github.dji-sdk:Mobile-UXSDK-Beta-Android:v0.4.0'

Smart Controller running Android version 7.1.2

ge17779 commented 2 years ago

Did you try to initialize the GlobalPreferencesManager like the documentation is wrote? Something like this: GlobalPreferencesManager.initialize(new DefaultGlobalPreferences(this));

https://github.com/dji-sdk/Mobile-UXSDK-Beta-Android/wiki/UX-SDK-5.0-Overview (check the Global Preferences section)