2014-11-20 25 views
29

में एक्शनबार के रूप में टूलबार सेट अप करें, मैं अपनी टूलबार को एक्शनबार के रूप में सेट करना चाहता हूं, लेकिन चूंकि आपकी टूलबार एक लेआउटमेंट है, इसलिए इसे आपके लेआउट में होना चाहिए। अब मेरा लेआउट मेरे टुकड़े में है।खंड

मैं अपने लेआउट में उपकरण पट्टी जोड़ा गया है और मैं इसे अपने टुकड़ा के भीतर फोन:

//Toolbar 
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); 

यह कार्य करता है क्योंकि मैं शीर्षक सेट कर सकते हैं और इतने पर है, लेकिन अब मैं इसे एक ActionBar के रूप में प्रतिक्रिया करने के लिए है क्योंकि मैं चाहता हूँ चाहते हैं वास्तव में यह है। setDisplayHomeAsUpEnabled (सही)

मैं एक ActionBar के लिए उपकरण पट्टी बदलने के लिए ऐसा करने के लिए:

setSupportActionBar(toolbar); 

यह मेरा टुकड़ा में काम नहीं करता ...

किसी को भी मदद कर सकते हैं मुझे पाने के लिए मेरी एक खंड में एक एक्शनबार के रूप में काम करने के लिए टूलबार।

उत्तर

39

अब ActionBarActivity तो आप getActivity() से AppCompatActivity पहले अपनी गतिविधि कास्ट करने के लिए की जरूरत है मान्य नहीं है। यहाँ एक उदाहरण है:

((AppCompatActivity) getActivity()).getSupportActionBar().setSubtitle(); 

कारण आप ऐसा इसलिए है क्योंकि getActivity() रिटर्न एक FragmentActivity और आप की जरूरत एक AppCompatActivity

15

एक्शनबार एक गतिविधि संपत्ति है। यदि आप किसी दिए गए खंड से टूलबार को स्वामित्व गतिविधि के एक्शनबार के रूप में सेट करना चाहते हैं, तो उस गतिविधि को प्राप्त करें जो खंड (Fragment.getActivity()) का मालिक है और इसकी एक्शनबार संपत्ति सेट करें।

फिर ज्यूज़ उसी टूलडिस्प्लेहोमएसएपएनेबल विधि का उपयोग करें जिसका आपने एक्शनबार को बैक/अप बटन प्राप्त करने के लिए एक्शनबार के रूप में सेट करने के बाद एक्शनबार पर शुरू करने के लिए उल्लेख किया था।

यदि आपके ऐप में उस गतिविधि के भीतर कई टुकड़े हैं तो आपको स्पष्ट रूप से इसका प्रबंधन करना होगा।

+0

मैं बस मैं इतना नेविगेशन का उपयोग करना चाहते ऐसा लगता है कि मुझे अपने टूलबार से बने एक्शनबार की आवश्यकता है। मैं यह कैसे सेट करूं कि एक्शनबार संपत्ति आप मुझे दे सकते हैं और उदाहरण कृपया? – Laurenswuyts

+0

क्यों न केवल अपनी टूलबार को अपनी मुख्य गतिविधि में डालें और इस तरह आप setSupportActionBar विधि –

+0

का उपयोग करने में सक्षम होंगे क्योंकि मैं टुकड़ों का उपयोग करता हूं और मैंने अपने टुकड़ों में अपना लेआउट सेट किया है, न कि मेरी गतिविधियों में। इसलिए मेरी गतिविधि टूलबार को मेरे टुकड़े में नहीं ढूंढ सकती है क्योंकि गतिविधि के बाद टूलबार – Laurenswuyts

7

उपयोग

((ActionBarActivity) getActivity()).getSupportActionBar().setSubtitle("Your Title"); 
+0

यह एक NullPointerException लौट रहा है। – Machado

+5

आपको मिलने से पहले सेट करने की आवश्यकता है। (वह rhymes) – notdrone

25

कोशिश कास्ट करने के लिए है:

((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);