NativeScript / NativeScript/plugins

[@nativescript/google-maps] Break app when you have a map inside a ScrollView

Open
#375 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
206
Forks
123
Avg merge
2d 1h
Merged PRs (30d)
1

Description

When you have a map inside a scrollView, if you navigate to another page, exit the app and re-enter, when you return to the back page with the map the app breaks. Error:

  System.err: An uncaught Exception occurred on "main" thread.
  System.err: Calling js method onCreateView failed
  System.err: Error: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to org.nativescript.widgets.HorizontalScrollView$SavedState
  System.err:
  System.err: StackTrace:
  System.err: onCreateView(file: src\webpack:\abll-app-next\node_modules\@nativescript\core\ui\frame\index.android.js:768:0)
  System.err:   at onCreateView(file: src\webpack:\abll-app-next\node_modules\@nativescript\core\ui\frame\fragment.android.js:28:0)
  System.err:   at com.tns.Runtime.callJSMethodNative(Native Method)
  System.err:   at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1302)
  System.err:   at com.tns.Runtime.callJSMethodImpl(Runtime.java:1188)
  System.err:   at com.tns.Runtime.callJSMethod(Runtime.java:1175)
  System.err:   at com.tns.Runtime.callJSMethod(Runtime.java:1153)
  System.err:   at com.tns.Runtime.callJSMethod(Runtime.java:1149)
  System.err:   at com.tns.FragmentClass.onCreateView(FragmentClass.java:55)
  System.err:   at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104)
  System.err:   at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524)
  System.err:   at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
  System.err:   at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899)
  System.err:   at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1817)
  System.err:   at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1760)
  System.err:   at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:547)
  System.err:   at android.os.Handler.handleCallback(Handler.java:942)
  System.err:   at android.os.Handler.dispatchMessage(Handler.java:99)
  System.err:   at android.os.Looper.loopOnce(Looper.java:210)
  System.err:   at android.app.ActivityThread.main(ActivityThread.java:8109)
  System.err:   at java.lang.reflect.Method.invoke(Native Method)
  System.err:   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
  System.err:   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
  System.err: Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to org.nativescript.widgets.HorizontalScrollView$SavedState
  System.err:   at org.nativescript.widgets.VerticalScrollView.onRestoreInstanceState(VerticalScrollView.java:235)
  System.err:   at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:4012)
  System.err:   at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:4018)
  System.err:   at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:4018)
  System.err:   at android.view.View.restoreHierarchyState(View.java:21650)

Playback repository: https://github.com/vallemar/error-google-maps-on-ScrollView

Video:

https://user-images.githubusercontent.com/15719383/206590563-1bf69f5b-2501-46e5-966c-3e322f1710f2.mp4

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the crash with the linked playback repository and inspect the Android restoration path shown in the stack trace, including frame/index.android.js, fragment.android.js, and VerticalScrollView.onRestoreInstanceState. Compare the map-in-ScrollView navigation and app-reentry flow with the reported ClassCastException. Done means returning to the page no longer breaks the app during view-state restoration.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, typescript
Domain
mobile
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.