Android Question NullPointerException in zoomimageview._touchlistener_event

angel_

Well-Known Member
Licensed User
Longtime User
I have this error in Crashlytics:

B4X:
Fatal Exception: java.lang.NullPointerException
Attempt to read from null array
myapp.zoomimageview._touchlistener_event (zoomimageview.java:370)

This is the code:

B4X:
Sub Class_Globals
    Public Root As B4XView 'ignore
    Private xui As XUI 'ignore
    Private zimgView As ZoomImageView
End Sub

Sub B4XPage_Appear
    Sleep(100)
    
    Dim FileNameTest As String = "test.txt"

    If File.Exists("FolderFile", FileNameTest) Then
        Dim bmp As B4XBitmap = xui.LoadBitmap("FolderFile", FileNameTest)
        If bmp.IsInitialized Then
            zimgView.SetBitmap(bmp)
        End If
    End If
End Sub

The error occurs with Android 15 but it does not always happen.

Any idea where the error could be?
 

angel_

Well-Known Member
Licensed User
Longtime User
Why load the image in b4XPage_Appear? Load it once in B4XPage_Created.
I want the image to be displayed when entering that page, it seemed more correct to me. Should I change it to B4XPage_Created?

Is this the full error message?

The error comes from analytics and there is no context of the error, only the error line is indicated and that it concerns devices with Android 15. I have not been able to reproduce the error with my device (Android 14)

B4X:
my_app.zoomimageview._touchlistener_event (zoomimageview.java:370)
java.lang.reflect.Method.invoke (Method.java)
anywheresoftware.b4a.BA.raiseEvent2 (BA.java:221)
anywheresoftware.b4a.BA.raiseEvent (BA.java:201)
anywheresoftware.b4j.object.JavaObject$1.invoke (JavaObject.java:238)
java.lang.reflect.Proxy.invoke (Proxy.java:1006)
$Proxy9.toString
java.lang.String.valueOf (String.java:4102)
java.lang.StringBuilder.append (StringBuilder.java:179)
android.view.View.performOnTouchCallback (View.java:16637)
android.view.View.dispatchTouchEvent (View.java:16567)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3192)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2852)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3198)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2809)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3198)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2809)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3198)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2809)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3198)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2809)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3198)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2809)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3198)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2809)
android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3198)
android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2809)
com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:542)
com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:2001)
android.app.Activity.dispatchTouchEvent (Activity.java:4664)
com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:490)
android.view.View.dispatchPointerEvent (View.java:16953)
android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:8883)
android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:8556)
android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:7943)
android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:8005)
android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:7966)
android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:8137)
android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:7974)
android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:8194)
android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:7947)
android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:8005)
android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:7966)
android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:7974)
android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:7947)
android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:11368)
android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:11315)
android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:11270)
android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:11534)
android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:317)
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
android.os.MessageQueue.next (MessageQueue.java:370)
android.os.Looper.loopOnce (Looper.java:214)
android.os.Looper.loop (Looper.java:387)
android.app.ActivityThread.main (ActivityThread.java:9500)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:600)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1005)
 
Upvote 0
Top