2017-02-28 55 views
1

我增加了共享操作使用下面的代碼ShareActionProvider顯示兩個圖標的系統圖標和共享圖標

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.example.esir.jualeader.aspirant.MainActivity"> 
    <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:title="@string/action_settings" 
     app:showAsAction="never" /> 
    <item 
     android:id="@+id/action_finish" 
     android:orderInCategory="200" 
     android:title="Exit" 
     app:showAsAction="never" /> 
    <item 
     android:id="@+id/share" 
     android:title="Share" 
     app:actionProviderClass="android.support.v7.widget.ShareActionProvider" 
     app:showAsAction="ifRoom" 
     /> 
</menu> 

private ShareActionProvider mShareActionProvider; 
private void setShareIntent(Intent shareIntent){ 

    if (mShareActionProvider != null) { 
     mShareActionProvider.setShareIntent(shareIntent); 
    } 
} 
private Intent createShareIntent(){ 
    Intent actionsend=new Intent(); 
    actionsend.setAction(Intent.ACTION_SEND); 
    actionsend.putExtra(Intent.EXTRA_TEXT,"Please Download Jua Leader App From : http://mstarsinnovations.com"); 
    actionsend.setType("text/plain"); 
    return Intent.createChooser(actionsend,"Share The Jua Leader Using"); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main,menu); 
    // Locate MenuItem with ShareActionProvider 
    MenuItem item = menu.findItem(R.id.share); 
    // Fetch and store ShareActionProvider 
    mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); 
    setShareIntent(createShareIntent()); 
    // Return true to display menu 
    return true; 
} 

結果是一個共享圖標看起來如圖圖片enter image description here

爲什麼會出現其他圖標,它是唯一可點擊的圖標。如何刪除它? 任何幫助將得到高度評價。

+0

你覺得'ShareActionProvider'看起來像什麼?如果你只是想分享按鈕,那麼你不需要'ShareActionProvider'。 – ianhanniballake

+0

我需要什麼? –

+0

你想讓它看起來像什麼? – ianhanniballake

回答

2

這正是ShareActionProvider的樣子。如果您只想分享按鈕,請停止使用ShareActionProvider。即,更新XML刪除ShareActionProvider

<item 
    android:id="@+id/share" 
    android:title="Share" 
    android:icon="@drawable/share" 
    app:showAsAction="ifRoom" 
    /> 

(你需要添加自己的@drawable/share到您的應用程序,如一個從material design icons)。

然後重寫你的onOptionsItemSelected()方法來啓動你的份額時,該菜單項被點擊:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getMenuId()) { 
    case R.id.share: 
     Intent shareIntent = createShareIntent(); 
     startActivity(shareIntent); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

你不需要做任何事情在onCreateOptionsMenu除了誇大你的菜單。

+0

酷...什麼是ShareActionProvider的使用呢? –

+0

[docs](https://developer.android.com/reference/android/support/v7/widget/ShareActionProvider.html#rankings)說得很清楚:「股票行動提供商保留了每個股票目標的排名,基於用戶選擇每一個的頻率,用戶選擇目標越頻繁,排名越高; **最常用的目標出現在應用欄中作爲默認目標**「 – ianhanniballake

+0

感謝澄清 –

0

它顯示您最近與該應用程序共享內容(圖標顯示在右側分享圖標)。