Je tente de mettre en place un bouton d'actualisation dans mon application pour permettre à un utilisateur de se rappeler manuellement à un serveur Web. Le code fonctionne, mais j'ai du mal à comprendre la vue sur l'action (au moins, je pense que c'est ce que je suis censé utiliser).
Mon élément de menu est ici: P>
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh); refresh.setVisible(false);
3 Réponses :
au lieu de définir votre classe d'action à un Progressbar code>, définissez-le sur une classe
linearlayout code>, comme tel:
class MyViewItem extends LinearLayout
J'ai du mal à comprendre. Pouvez-vous me donner un peu plus de détails sur cette classe personnalisée? J'ai ajouté plus au message principal pour montrer ce que j'ai des problèmes.
Vous devez utiliser le nom pleinement qualifié dans le XML, par exemple. com.mydomain.mypackage.iconswitcher code>, plutôt que juste
iconswitcher code>. Essayez cela, voyez si les choses commencent à travailler.
Nope, j'ai toujours une erreur de pointeur nulle. C'est aussi définitivement sur le iconswitcher ic = (iconswitcher) rafraîchi.getagerview (); code> ligne. Si je commencez cela, je ne reçois aucune erreur, mais je ne reçois évidemment pas de bouton dynamique, juste l'icône statique. Dois-je déclarer l'iconswitcher dans le manifeste de quelque manière que ce soit?
Pouvez-vous essayer d'utiliser SetaChaview (nouvelle iconswitcher (...)) code> au lieu de définir la classe d'action de l'action dans le XML? Je suppose que Android utilise en interne
menuitemimpl code>, qui devrait renvoyer une non-null si vous le définissez de cette façon. En outre, vous pouvez simplement garder une référence à elle pivotante ...
Hmm, je pensais que je gardais une référence à cela, mais que j'avise que j'appelle la référence dans un fil différent avant de l'avoir eu. Je commence à être capable de le manipuler. À ce stade, je pense que je vais devoir avoir des éléments de menu. Un qui est l'icône de rafraîchissement. Quand il est pressé, je vais mettre une barre de progression dans sa place, plutôt que d'essayer de changer l'icône elle-même. Une fois terminé, je vais les retourner.
Essayez d'utiliser:
app:showAsAction="ifRoom" app:actionViewClass="android.widget.ProgressBar"
Avez-vous essayé d'extraire votre élément de menu comme celui-ci?
Je l'ai compris. J'ai trouvé ce précédent Donc question. À partir de là, j'ai trouvé le code Google a écrit ce ici . C'était essentiellement copier et coller à ce stade et fonctionne parfaitement.
Cela n'a pas échoué à SetaChageview mais au point où vous faites (MENUITEM) FOYVISHYIDE (R.ID.MAIN_MENU_REFRESH). Il s'agit apparemment d'une exception classique à Cast ActionItemView à Menutuem.