10

तस्वीर देखें। मैं आइकन "पी" कैसे छिपा सकता हूं जिसका अर्थ है Pinterest पर साझा करना?शेयर एक्शन प्रदाता के पास शेयर एक्शन (जो अधिकतर उपयोग करते हैं) आइकन को कैसे छिपाना है?

enter image description here

वे दोनों कार्रवाई पट्टी पर कर रहे हैं और मैं ActionBarSherlock का उपयोग करें।

+0

http: // stackoverflow।com/question/10706564/how-do-you-turn-off-share-history-when-use-shareactionprovider –

उत्तर

12

आप करना चाहते हैं तो सभी शेयर इतिहास के डेटा मॉडल रखने के लिए, लेकिन सिर्फ अतिरिक्त "डिफ़ॉल्ट शेयर गतिविधि" ICOM नहीं करना चाहती। How do you turn off share history when using ShareActionProvider? पर उत्तर पर्याप्त नहीं है।

क्या करना चाहिए है:

  • कॉपी अपनी परियोजना कोड को ActionBarSherlock से इन कक्षाओं
    • ShareActionProvider.java
    • ActivityChooserView.java
  • अपने ShareActionProvider पर। जावा क्लास, ActivityChooserView.java आयात करें जिसे आपने अभी एक्शनबर्सशॉक फ़ाइल स्थान के बजाय कॉपी किया है
  • ActivityChooserView.java से कम -
    • लाइन if (activityCount > 0 && historySize > 0)
    • लगता है if (false)के साथ इस लाइन की जगह (यह बहुत बदसूरत है, लेकिन यह तेज ठीक है। आप कोड में तल्लीन DefaultActivity कार्यान्वयन की सभी घटनाओं)
    दूर करने के लिए कर सकते हैं

संपादित करें: नई ActionProvider अपने मेनू आइटम के लिए सेट के लिए मत भूलना एक्सएमएल यह कैसा दिखेगा से,: android:actionProviderClass="com.*.CustomShareActionProvider"

यही है!

+0

क्या मुझे कुछ याद आ रहा है, क्योंकि अब मैं ActivityChooserModelClient को कार्यान्वित नहीं कर सकता? – whitfin

+0

इसके अलावा (पहले संपादन नहीं करने के लिए मेरा बुरा); यदि आप एक्शनप्रोवाइडर के साथ गतिविधि छोड़ते हैं और उस पर वापस जाते हैं, तो आपको एक खाली [] बॉक्स दिखाई देगा जहां एक आइकन सामान्य रूप से होगा। – whitfin

+1

मुझे इस समाधान के साथ समस्याएं मिलीं। Com.actionbarsherlock.widget.ActivityChooserModel आयात नहीं कर सका मेरी कस्टम कक्षाओं (बाहरी पैकेजों के लिए अवरुद्ध)। यहां तक ​​कि इस वर्ग को मेरे पैकेज में कॉपी करने के लिए, यह काम नहीं किया (ऐप क्रैश):/ –

4

शॉन के जवाब के आधार पर मैंने आवश्यक कक्षाएं बनाई हैं, आप उन्हें अपनी परियोजना (https://gist.github.com/saulpower/10557956) में कॉपी कर सकते हैं। यह न केवल इतिहास को बंद करने की क्षमता को जोड़ता है, बल्कि उन ऐप्स को फ़िल्टर करने के लिए भी जोड़ता है जिन्हें आप साझा करना चाहते हैं (यदि आप पैकेज का नाम जानते हैं)।

private final String[] INTENT_FILTER = new String[] { 
     "com.twitter.android", 
     "com.facebook.katana" 
}; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.journal_entry_menu, menu); 

    // Set up ShareActionProvider's default share intent 
    MenuItem shareItem = menu.findItem(R.id.action_share); 

    if (shareItem instanceof SupportMenuItem) { 
     mShareActionProvider = new ShareActionProvider(this); 
     mShareActionProvider.setShareIntent(ShareUtils.share(mJournalEntry)); 
     mShareActionProvider.setIntentFilter(Arrays.asList(INTENT_FILTER)); 
     mShareActionProvider.setShowHistory(false); 
     ((SupportMenuItem) shareItem).setSupportActionProvider(mShareActionProvider); 
    } 

    return super.onCreateOptionsMenu(menu); 
} 
11

मुझे इस के आसपास काम करने का एक तरीका मिला। मैं समर्थन पुस्तकालय 23.0.1 का उपयोग कर रहा हूं, मैंने अन्य समर्थन लाइब्रेरी संस्करणों पर इसका परीक्षण नहीं किया है।

समाधान आसान है, जब आप ShareActionProvider बनाते हैं, तो केवल CreateActionView() पर विधि ओवरराइड करें और इसके लिए शून्य वापस करें। फिर आप पॉपअप मेनू में सभी इतिहास ट्रैक कर सकते हैं, लेकिन इतिहास टूलबार में नहीं दिखाया जाएगा।

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuItem item = menu.add(Menu.NONE, R.id.menu_share, Menu.NONE, R.string.share); 
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    mShareActionProvider = new ShareActionProvider(this) { 
     @Override 
     public View onCreateActionView() { 
      return null; 
     } 
    }; 
    item.setIcon(R.drawable.abc_ic_menu_share_mtrl_alpha); 
    MenuItemCompat.setActionProvider(item, mShareActionProvider); 
    return true; 
} 

वर्तमान में मैं चारों ओर इस काम का उपयोग कर किसी भी समस्या नहीं मिला है:

यहाँ एक कोड नमूना है।

+1

यह 2016 के अनुसार सही उत्तर है। – VSG24

+0

मैं 2017 के लगभग (Q) क्यू 4 से गवाह हूं, यह वास्तव में इतिहास की चीज़ों से दूर है समर्थन लाइब्रेरी संस्करण 26.0.1। – Xhezairi

संबंधित मुद्दे