2012-08-15 7 views
6

Ich benutze einen ShareActionProvider in einem PopupMenu, aber wenn ich auf den Menüpunkt Freigabe klicke, zeigt es zwei PopupMenus auf dem Bildschirm, einer von den anderen abgedeckt. Und einer zeigt das Anwendungssymbol und den Namen, der andere nur den Anwendungsnamen.Ich benutze ShareActionProvider in PopupMenu, aber zeige zwei PopupMenu?

Es funktioniert gut außer dieses Problem ...
Wie kann ich es beheben?

PS: bitte vergib mir meine schlechten Ausdruck

Mein Code ist:

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

<?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

Völlig bizarr Problem, mit mehreren Fragen hier über sie und absolut keine Antworten! Heh! – Fattie

Antwort

0

Ich hatte zu verwenden startActivity (getShareIntent ("/ status.jpg ")); Dies funktioniert nicht genau so, wie Sie es erwarten. Es kann jedoch für den gleichen Zweck verwendet werden. Hoffe es hilft.

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

Doch schließlich zog ich Aktionsleiste mit Auswahl patten zu verwenden, anstatt: http://developer.android.com/design/patterns/selection.html