2012-08-15 11 views
6

Uso un ShareActionProvider in un PopupMenu, ma quando faccio clic sull'elemento del menu di condivisione, viene visualizzato due PopupMenus sullo schermo, uno coperto dall'altro. E uno mostra l'icona dell'applicazione e il nome, l'altro mostra solo il nome dell'applicazione.I Utilizzare ShareActionProvider in PopupMenu, ma mostrare due PopupMenu?

Funziona bene tranne questo problema ...
Come posso risolvere il problema?

PS: ti prego di perdonarmi per il mio cattivo espressione

Il mio codice è:

PopupMenu popup = new PopupMenu(this, button); 
popup.getMenuInflater().inflate(R.menu.scrawl_popup_menu, popup.getMenu()); 
MenuItem overflowItem = popup.getMenu().findItem(R.id.popup_share); 
ShareActionProvider overflowProvider = 
    (ShareActionProvider) overflowItem.getActionProvider(); 
overflowProvider.setShareHistoryFileName(
    ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); 
overflowProvider.setShareIntent(createShareIntent()); 

menu.xml è:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/popup_clear" 
     android:icon="@drawable/ic_menu_clear" 
     android:title="@string/popup_menu_clear" /> 
    <item android:id="@+id/popup_insert_bg" 
     android:icon="@drawable/ic_menu_insert_bg" 
     android:title="@string/popup_menu_insert_bg"/> 
    <item android:id="@+id/popup_share" 
     android:icon="@android:drawable/ic_menu_share" 
     android:title="@string/popup_menu_share" 
     android:actionProviderClass="android.widget.ShareActionProvider"> 
    </item> 
</menu> 
+0

totalmente bizzarro problema, con domande a risposta multipla su qui su di esso e assolutamente nessuna risposta! Eh! – Fattie

risposta

0

ho dovuto usare startActivity (getShareIntent ("/ status.jpg ")); Questo non funziona esattamente come previsto. Tuttavia, può essere utilizzato per lo stesso scopo. Spero che aiuti.

private Intent getShareIntent(String filePath) { 
     Intent shareIntent = new Intent(Intent.ACTION_SEND); 

     File sdCard = Environment.getExternalStorageDirectory(); 

     File sharedFile = new File(sdCard + sharePath); 
     Uri uri = Uri.fromFile(sharedFile); 

     shareIntent.setType("image/*"); 
     shareIntent.putExtra(Intent.EXTRA_STREAM, uri); 
     return shareIntent; 
    } 

Tuttavia, finalmente mi sono trasferito a usare la barra di azione con patten Selezione invece: http://developer.android.com/design/patterns/selection.html