2012-11-01 22 views
9

के लिए गतिशील रूप से टेक्स्ट बदलें मेरे पास एक एक्शन बार है (एक्शनबार्सहेलॉक का उपयोग करके) जिसमें दो आइटम हैं। उनमें से एक उपयोगकर्ता द्वारा मेरे ऐप में एकत्र किए गए अंकों की मात्रा है। जब अंक की मात्रा बदलती है तो मैं इस एक्शन बार बटन को बदलना चाहता हूं।एंड्रॉइड एक्शनबार बटन

मैं यह नहीं समझ सकता कि उस बटन के टेक्स्ट व्यू को कैसे सेट किया जाए। कोड के माध्यम से सेट करने के लिए मैं क्या कर सकता हूं?

उत्तर

5

सबसे पहले आप "बटन का टेक्स्टव्यू" सेट नहीं करते हैं, क्योंकि बटन टेक्स्टव्यू बढ़ाता है, आप बटन के टेक्स्ट को स्वयं सेट करते हैं। आप इस निम्नलिखित तरीके से करने की कोशिश कर सकते हैं अपनी गतिविधि के onCreate():

//I suppose you create custom ActionBar like this 
final View addView = getActivity().getLayoutInflater().inflate(R.layout.my_action_bar, null); 
bar.setCustomView(addView); 
button=(Button)addView.findViewById(R.id.button); 
button.setText("Whatever"); 

आप मेनू आइटम का उपयोग करते हैं, तो आप इस तरीके का प्रयास करना चाहिए:

getSupportMenuInflater().inflate(R.menu.activitymenu, menu); 
MenuItem menuItem=menu.findItem(R.id.menuSearch); 

इसके अलावा here, here और here देखने का प्रयास करें। यह सहायक होना चाहिए।

+0

काम किया तो मैं अगर है कि मेरी स्थिति के लिए वास्तव में काम कर रहा है पता नहीं है। मेरे पास यह क्रिया हैबार = getSupportActionBar(); \t \t actionBar.setNavigationMode (ActionBar.NAVIGATION_MODE_TABS); एक्शन बार के लिए और फिर कुछ आइटम पहले से ही मेनू xml में हैं। मैं समझ नहीं सकता कि उन्हें कैसे पहुंचाया जाए। – Jeremy

+0

अपने मामले के लिए संपादन देखें – slezadav

13

एक्शनबार आइटम विकल्प मेनू से हैं, जो बार पर दिखाए जाने पर बटन के रूप में प्रस्तुत किए जाते हैं। यदि आप आइकन की आपूर्ति नहीं करते हैं, तो विकल्प मेनू शीर्षक का शीर्षक बटन के शीर्षक के रूप में उपयोग किया जाता है,

तो, जब तक कि आप एक कस्टम व्यू का उपयोग नहीं कर रहे हैं, और आप बस मेनू आइटम शीर्षक का उपयोग स्कोर के रूप में कर रहे हैं सूचक, आप इसे onPrepareOptionsMenu() में बदल सकते हैं। जब आपको अपडेट करने की आवश्यकता होती है, तो invalidateOptionsMenu() पर कॉल करें, और ऑनपेरऑप्शनमेनू आपके लिए बुलाया जाएगा।

जैसे

//user scores some points 
mUserScore += points; 
invalidateOptionsMenu(); 
तो कॉलबैक में

:

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    MenuItem score = menu.findItem(R.id.score_menu_item); 
    score.setTitle(String.valueOf(mUserScore)); 
} 
+0

यह मेरे लिए पूरी तरह से काम किया। धन्यवाद :) –

+0

हाँ, यह काम करता है !! धन्यवाद – harrakiss

+0

उत्कृष्ट! धन्यवाद! –

1

इस कोड के लिए मुझे

actionBar.setCustomView(R.layout.my_action_bar); 
button=(Button)actionBar.getCustomView().findViewById(R.id.button); 
button.setText("text");