2015-08-03 2 views
2

J'ai déjà utilisé ActionBarSherlock, mais maintenant je déplace toutes mes applications vers le thème Material en utilisant appCompat. Je reçois un UnsupportedOperationException avec mon code ci-dessous:Quelle est la bonne importation de Menu et MenuItem lors de l'utilisation d'appCompat dans Android?

MenuItem num = (MenuItem) menu.findItem(R.id.num); 

     num.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { 
      @Override 
      public boolean onMenuItemActionExpand(MenuItem menuItem) { 
       //wow 
      } 

Je reçois une erreur de:

java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setOnActionExpandListener() 
      at android.support.v7.internal.view.menu.MenuItemImpl.setOnActionExpandListener(MenuItemImpl.java:740) 

Alors, que dois-je faire dans ce cas? Mon Menu et MenuItems doivent-ils être importés d'un autre paquet? Ou dois-je juste utiliser un tout différent avec MenuCompat et MenuItemCompat. Merci

Répondre

1

La méthode setOnActionExpandListener a été ajouté que dans le niveau de l'API 14. Par conséquent, vous ne pouvez pas l'utiliser en toute sécurité car il n'existe pas dans les niveaux d'API inférieur à 14.

Dans votre cas, comme suggéré par le message d'erreur , vous devez utiliser MenuItemCompat.setOnActionExpandListener().

+0

Intéressant. Je l'ai utilisé jusqu'à API 10 avec ABS, je suppose. Je vois à partir du message d'erreur que je devrais utiliser compat, mais tout au long de mon application quelle importation dois-je utiliser? – EGHDK

+0

Chaque fois que vous avez besoin d'utiliser une méthode qui a été ajoutée plus tard à MenuItem, vous devez utiliser les méthodes statiques de MenuItemCompat, en l'important avec 'import android.support.v4.view.MenuItemCompat;'. Les importations de Menu et MenuItem sont les habituelles: 'import android.view.Menu; importez android.view.MenuItem; ' –

+0

Bizarre. Donc, je n'utilise pas MenuCompat et MenuItemCompat dans mon code? Comment puis-je résoudre le problème que j'ai alors avec 'num.setOnActionExpandListener (nouveau MenuItemCompat.OnActionExpandListener() {' – EGHDK