2013-09-26 46 views
5

我使用ActionBarSherlock在我的項目,並要設置一個分享按鈕,在FB等等等等張貼的內容...我實現了這種方式:Adding items to action bar (using ActionBarSherlock)在動作條刪除多餘的圖標(使用ShareActionProvider和ActionBarSherlock時)

如您所知,ShareActionProvider添加了第二個圖標,其中包含最常用的共享選項。這意味着其他應用程序的圖標是我在操作欄出現,我想阻止的行爲......我見過爲2個可能的解決方案,可惜兩人都沒有工作對我來說:/

第一次嘗試在我的目標類中,實現了OnShareTargetSelectedListener並覆蓋了onShareTargetSelected方法(如下所示:ActionBarSherlock - Share Content icon issue)。但額外的圖標在那裏停留...這裏是我的代碼:

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getSupportMenuInflater().inflate(R.menu.share, menu); 
    mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.share).getActionProvider(); 
    Intent intent = getDefaultShareIntent(); 
    mShareActionProvider.setOnShareTargetSelectedListener(this); 
    if(intent!=null) 
     mShareActionProvider.setShareIntent(intent); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onShareTargetSelected(ShareActionProvider source, 
            Intent intent) { 
    this.startActivity(intent); 
    // started activity ourself to prevent search history 
    return true; 
} 

第二次嘗試是從ActionBarSherlock重寫一些類,以防止它顯示額外的圖標(喜歡這裏:How to hide the share action (which use most) icon near the share action provider?)。但是我解決了這個問題,因爲我無法從我的自定義類(阻止到外部包)中導入com.actionbarsherlock.widget.ActivityChooserModel。即使複製這個類到我的包,它沒有奏效(應用程序崩潰)...

看起來像一個非常平常的事情來禁用這個額外的圖標,但我不明白爲什麼上述解決方案didn' T努力我...

在此先感謝您的任何想法和sugestions

+0

你的第二個解決方案是我推薦的方法。 「甚至將這個類複製到我的包中,它不起作用(應用程序崩潰)」 - 使用LogCat檢查與您的崩潰相關的Java堆棧跟蹤。 「看起來像是一個非常平常的事情,禁用這個額外的圖標」 - 你的證明是... ...究竟是什麼? – CommonsWare

回答

3

我不知道,如果你解決你的問題,但我有同樣的問題,以除去ShareActionProvider歷史。我嘗試了一切,我找到的近似答案和你一樣(How to hide the share action icon?)。
一些研究之後,我發現了第二個評論這招:
Action Bar Sherlock has depreciated methods

  1. 複製/由ABS的3類ShareActionProviderActivityChooserViewActivityChooverModel)粘貼到你的包。
  2. 用你自己的軟件包替換你的導入。
  3. 通過if (false)在新ActivityChooserView更改行if (activityCount > 0 && historySize > 0)
    (您將收到一條錯誤消息:「setActived」不適用於您當前的版本)
  4. 保存並關閉課程。
  5. 通過android:actionProviderClass="com.myapp.ShareActionProvider"
  6. 替換類在menu.xml文件您的項目在你Manifest,使minSdkVersion等於11.保存您的項目。打掃。
  7. 返回到您的Manifest,更換您的minSdkVersion由你所使用的舊的。保存並清潔。

它完美。讓我知道這個提示是否解決了你的問題。

+0

雖然做同樣我在ShareActionProvider錯誤獲得擴展ActionProvider?如何解決它 –

+0

你得到了什麼確切的錯誤,@KingofMasses?也許你需要發佈一個相關的問題,並解釋更多的問題。 – Fllo

+0

actully我無法導入com.android.internal.R; ..任何幫助? @Fllo 我的目標是沒有發佈一個問題,我想追查出來! –

0

1)上述溶液通過FLLO究竟對我的作品,也2)你可以導入ActionbarSherlock庫,並使用它,這樣無需編輯像aboved提到的代碼。 但我的觀點是更好地解決方案1)....因爲在最新版本中,他們使用了ActionBarCompat

相關問題