2012-08-15 12 views
6

Uso un ShareActionProvider en un PopupMenu, pero cuando hago clic en el elemento compartido del menú, muestra dos PopupMenus en la pantalla, uno cubierto por el otro. Y uno muestra el icono y el nombre de la aplicación, el otro solo muestra el nombre de la aplicación.Uso ShareActionProvider en PopupMenu, pero muestro dos PopupMenu?

Funciona bien excepto este problema ...
¿Cómo puedo solucionarlo?

PD: por favor perdóname por mi mala expresión

Mi código es:

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 es:

<?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 extraño problema, con múltiples preguntas aquí sobre ella y absolutamente ninguna respuesta! ¡Heh! – Fattie

Respuesta

0

tuve que usar startActivity (getShareIntent ("/ status.jpg ")); Esto no funciona exactamente como esperaba. Sin embargo, puede ser utilizado para el mismo propósito. Espero que ayude

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; 
    } 

Sin embargo, finalmente se trasladó a usar la barra de acción con Patten Selección lugar: http://developer.android.com/design/patterns/selection.html

Cuestiones relacionadas