2017-09-13 2 views
13

J'ai une application hybride Cordova Android, et l'application se bloque lorsque l'utilisateur appuyez sur une zone de liste déroulante dans mon WebView fonctionnant sous Android OS 8. Je ' Nous avons créé une page simple avec un tag <select> et le problème est reproductible. J'ai une solution de contournement qui consiste à faire ma propre alerte pop-up pour sélectionner, mais je me demandais juste si cela arrive à quelqu'un d'autre et s'il s'agit d'un bug OS8 WebView.Pourquoi Android OS 8 WebVew avec balise de sélection HTML crash l'application

Ci-dessous est une simple page avec <select> tag

https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select

Ci-dessous est mon journal crash

11:04:58.643 3208-3208/com.****.****E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.****.****, PID: 3208 android.content.res.Resources$NotFoundException: Resource ID #0x0 
    at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:195) 
    at android.content.res.Resources.loadXmlResourceParser(Resources.java:2133) 
    at android.content.res.Resources.getLayout(Resources.java:1142) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:421) 
    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:416) 
    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:407) 
    at org.chromium.content.browser.input.SelectPopupAdapter.getView(SelectPopupAdapter.java:53) 
    at android.widget.AbsListView.obtainView(AbsListView.java:2372) 
    at android.widget.ListView.measureHeightOfChildren(ListView.java:1408) 
    at android.widget.ListView.onMeasure(ListView.java:1315) 
    at android.view.View.measure(View.java:21998) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
    at android.view.View.measure(View.java:21998) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
    at android.view.View.measure(View.java:21998) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) 
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514) 
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:806) 
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:685) 
    at android.view.View.measure(View.java:21998) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
    at android.view.View.measure(View.java:21998) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
    at android.view.View.measure(View.java:21998) 
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580) 
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) 
    at com.android.internal.policy.DecorView.onMeasure(DecorView.java:721) 
    at android.view.View.measure(View.java:21998) 
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2410) 
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1471) 
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1751) 
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386) 
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733) 
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911) 
    at android.view.Choreographer.doCallbacks(Choreographer.java:723) 
    at android.view.Choreographer.doFrame(Choreographer.java:658) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897) 
    at android.os.Handler.handleCallback(Handler.java:789) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

Ma question n'est pas la même chose que ce

Trying to open SELECT tag in Android WebView crashes the application

MISE À JOUR sur 9 janvier 2018: Je n'ai pas encore de solution, ma solution de contournement temporaire est de supprimer la balise et d'utiliser simplement une entrée. Lorsque l'utilisateur sélectionne cet élément, nous passons l'événement au code natif pour faire apparaître une boîte de dialogue pour la sélection et mettre à jour l'entrée une fois que l'utilisateur a fait une sélection.

+0

Je ne peux pas reproduire ceci sur un Google Pixel fonctionnant sous Android 8.0.0. Appuyez sur la zone de liste déroulante pour afficher une boîte de dialogue comme prévu. Ma configuration 'WebView' est minimale, juste' setJavaScriptEnabled (true) '. FWIW, ce problème [semble avoir été rapporté plus tôt cette année pour Android 7.0] (https://issuetracker.google.com/issues/37137929), mais personne n'a fourni un cas de test reproductible, donc le problème n'est allé nulle part. – CommonsWare

+0

Des nouvelles à ce sujet? –

+2

Puis-je savoir comment vous avez résolu ce problème? Je reçois également le même problème dans mon application dans Google Pixel. Mais cela fonctionne très bien dans le navigateur de pixels et aussi dans une autre application fictive que j'ai créée. – Nivedh

Répondre

0

J'ai le même problème sur Android 8.0. enfin je le résous. Essayez de mettre à jour votre compileSdkVersion à 26, et mettre à jour votre com.android.support:appcompat-v7 à 26.

+3

N'ajoutez pas de commentaires ici. – Billa

+0

Ne résout pas le problème. – Raanan

-1

Son look comme vous définissez la valeur entière à la Textview. essayez d'utiliser String.valueOf(value) pour définir la valeur dans Textview.

+0

La question concerne un élément Select dans un WebView. – Raanan

0

J'ai creusé dans les journaux de bord. Bien que cette réponse ne résout pas votre problème, vous pouvez obtenir des renseignements utiles

Je ne sais pas pourquoi cela se produit sur Android 8.0, je n'ai pas été en mesure de reproduire cela sur l'émulateur Android 8.0 si