2013-01-11 36 views
28

मैं बस कोड द्वारा एक्शनबार मेनू Item के दृश्य को ट्विक करना चाहता हूं।मेरे मेनू के getActionView() gett वापसी शून्य

दुर्भाग्यवश, ऐसा लगता है कि getActionView हमेशा शून्य हो जाता है!

मेरे कोड:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = this.getSupportMenuInflater(); 
    inflater.inflate(R.menu.folder, menu); 
    return super.onCreateOptionsMenu(menu); 

} 

public boolean onPrepareOptionsMenu(final Menu menu) { 
    MenuItem menuFolder = menu.findItem(R.id.menu_folder); 
    Log.i("", "* onPrepareOptionsMenu *" + menuFolder); 
    Log.i("", "* getActionView *" + menuFolder.getActionView()); 

लॉग है:

01-11 22: 13: 42.884: मैं/(7893): * onPrepareOptionsMenu * com.actionbarsherlock.internal.view। [email protected]

01-11 22: 13: 42.884: मैं/(7893): * getActionView * अशक्त

किसी भी मदद के लिए एक बहुत धन्यवाद

संपादित करें:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
      android:id="@+id/menu_folder" 
      android:icon="@drawable/ic_menu_archive" 
      android:showAsAction="always"/> 
</menu> 
+0

कृपया दिखाने 'R.menu.folder' रेखा से नीचे जोड़ें। –

+0

प्रश्न में जोड़ा गया –

उत्तर

28

getActionView() ही काम करता है वहाँ setActionView से एक कस्टम actionView हो चुका है।

+6

क्या मेनूइटम के दृश्य तक पहुंचने का कोई विकल्प है? –

+0

निर्भर करता है। क्या आप बस इस बटन, या सभी बटन tweak करना चाहते हैं? यदि यह सिर्फ यह बटन है, तो आपको शायद एक कस्टम दृश्य सेट करना चाहिए। यदि इसके सभी बटन हैं, तो संभवतः यदि संभव हो तो आपको शैलियों का उपयोग करना चाहिए। आप क्या परिवर्तन करने की कोशिश कर रहे हैं? –

+2

मैं एप्लिकेशन में नई सामग्री होने पर आइकन पर "बैज" रखना चाहता हूं, इसलिए मुझे इस छोटे काउंटर –

25

मेरे लिए काम किया गया समाधान ऐप एंड्रॉइड के बजाय नेमस्पेस का उपयोग करना है।

app:actionViewClass="android.support.v7.widget.SearchView"

मत भूलना यह घोषणा करने के लिए: xmlns:app="http://schemas.android.com/apk/res-auto"

+0

आप कस्टम लेआउट सेट करने के लिए actionLayout विशेषता का भी उपयोग कर सकते हैं। मेरे मामले में मैं एक स्पिनर का उपयोग कर रहा था जिसे मैंने अपने स्वयं के एक्सएमएल में परिभाषित किया था। –

21

आप का उपयोग करना चाहिए

app:actionLayout="@layout/menu_actionbar_basket" 

चाल thats अगर आप

android:actionLayout="@layout/menu_actionbar_basket" 

का उपयोग आप हमेशा होगा शून्य हो जाओ डिफ़ॉल्ट टूलबार में अपवाद।

+0

धन्यवाद @ स्मारर्टिज, आप मेरे घंटों को बचाते हैं;) – immodi

3

यदि आपका डीबग बिल्ड बिना किसी समस्या के काम कर रहा है और समस्या केवल रिलीज बिल्ड के साथ है तो यह प्रोजेवार्ड कॉन्फ़िगरेशन के कारण हो सकती है। आप अपने आवेदन में ProGuard सक्षम किया है तो proguard-rules.pro को

-keep class android.support.v7.widget.SearchView { *; }