2015-10-09 2 views
8

Ho un'app per Android che ha una griglia in esso. Gli oggetti di gridview contengono, tra le altre cose, un pulsante per mostrare i menu sensibili al contesto. Quindi, ho implementato un menu popup che appare quando toccano il pulsante nell'elemento di gridview.Impossibile creare il menu "Condividi" nel menu popup su Android

Questo menu contiene 3 articoli:

  1. Modifica elemento
  2. Elimina elemento
  3. articolo in

ho implementato con successo il modificare ed eliminare le voci di menu. Il problema è con la voce di menu "Condividi elemento". È un ShareActionProvider. In precedenza ho implementato queste opzioni di menu come un ActionMode (voci di menu nella parte superiore). Ma ora che il menu è un popup, non sono sicuro di come implementare l'opzione di menu "Condividi elemento".

Ecco il mio popup_menu.xml:

 <?xml version="1.0" encoding="utf-8"?>  
     <menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <group android:id="@+id/group_edit_mode"> 
     <item 
      android:id="@+id/MenuItemEdit" 
      android:title="@string/item_option_edit" 
      app:showAsAction="withText|ifRoom" /> 

     <item 
      android:id="@+id/MenuItemDelete" 
      android:title="@string/delete" 
      app:showAsAction="withText|ifRoom" /> 

     <item 
      android:id="@+id/MenuItemShare" 
      android:title="@string/share" 
      app:showAsAction="ifRoom" 
      app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/> 
    </group> 
</menu> 

Ecco il codice di menu a comparsa:

   PopupMenu popupMenu = new PopupMenu(MINMainActivity.getSharedInstance(), optionButton); 
      MenuInflater inflater = popupMenu.getMenuInflater(); 
      inflater.inflate(R.menu.gridview_edit_menu_single_item, popupMenu.getMenu()); 
      popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() 
      { 
       @Override 
       public boolean onMenuItemClick(MenuItem item) 
       { 
        boolean choiceHandled = false; 
        int itemID = item.getItemId(); 
        switch (itemID) 
        { 
         case R.id.MenuItemEdit: 
          MINPageTypeGridFragment.launchAlbumItemDetails(mFragment, albumItem, mPageItem.pageConfigFileName); 
          mFragment.currentMode = MINPageTypeGridFragment.MODE_STANDARD; 
          choiceHandled = true; 
          break; 
         case R.id.MenuItemDelete: 
          MINPageTypeGridFragment.deleteItem(mFragment, mAlbum, albumItem); 
          mFragment.currentMode = MINPageTypeGridFragment.MODE_STANDARD; 
          choiceHandled = true; 
          break; 
         case R.id.MenuItemShare: 
          choiceHandled = true; 
          mFragment.currentMode = MINPageTypeGridFragment.MODE_STANDARD; 
          break; 
        } 
        return choiceHandled; 
       } 
      }); 
      popupMenu.show(); 

risposta

2

questo era il modo overthought. L'ho tenuto come un pulsante e ho creato un selettore.

public void onShareClick(MINAlbumItem albumItem) 
{ 
    List<MINAlbumItem> albumItemsArray = new ArrayList<MINAlbumItem>(); 
    albumItemsArray.add(albumItem); 

    // Creates intent and loads data from items array 
    Intent intent = mFragment.Share(albumItemsArray); 
    MINMainActivity.getSharedInstance().startActivity(Intent.createChooser(intent, MINMainActivity.getSharedInstance().getResources().getString(R.string.send_to))); 
}