2016-01-25 1 views
0

PopupWindow montre et fonctionne parfaitement dans AVD mais pas sur un vrai appareil.Le studio Android PopupWindow fonctionne dans l'émulateur mais pas sur l'appareil

C'est la fonction qui est censé créer le menu contextuel:
http://pastebin.com/jabHVp2c

Ce que j'ai essayé:
Je me suis assuré que onClick est appelé, et il est.
Je me suis assuré qu'aucune autre vue dans la hiérarchie ne soit coupée, ou même cliquable, juste au cas où.
Le problème semble être apparu après avoir ajouté des animations à la popup, mais les commenter ne fait aucune différence, et comme mentionné, cela fonctionne dans l'émulateur comme prévu.

niveau API App est de 15, le niveau de l'API AVD est 23, un appareil est une API de fonctionnement LG G3 23.

+0

Suppression de toute trace d'animations, y compris les fichiers XML, pas d'action. Des lignes de débogage ont également été ajoutées et la fonction est exécutée jusqu'à la fin, mais la fenêtre contextuelle ne s'affiche pas. –

Répondre

0
popupWindow.setWindowLayoutMode(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT); 
popupWindow.showAtLocation(rootView, Gravity.CENTER, 0, 0); 
popupWindow.update(); 

Cela résout le problème. Apparemment, la "mise à jour()" est nécessaire, bien que cela fonctionne sans elle sur l'émulateur, et je n'ai aucune idée de comment cela a fonctionné sur l'appareil plusieurs versions avant.

Espérons que cela aide quelqu'un.

0

Je pense que la réponse @Max est absolument correcte, mais popupWindow.update(); n'est pas nécessaire, au lieu popupwindow.showAtLocation() fonctionne très bien.

+0

Il a l'habitude de travailler sans elle, et puis pour une raison quelconque, tout ce que j'ai changé fait que ça ne marche plus, et seulement sur un vrai appareil. Je ne sais toujours pas ce qui s'est mal passé. –