2011-07-11 16 views
13

मैं एंड्रॉइड (2.1> 3.1) के लिए एक ऐप लिख रहा हूं और मैं होम गतिविधि तक जाने के लिए हनीकॉम ऐप्स में ऐप आइकन का उपयोग करने के परिचित अभ्यास का उपयोग करना चाहता हूं, हालांकि, जब मैं गतिविधि चलाता हूं पहले, गैर हनीकॉम डिवाइस जहां गतिविधि.getActionBar(); विधि अभी तक मौजूद नहीं है, ऐप फोर्स बंद हो जाता है, यदि डिवाइस हनीकॉम चला रहा है तो मैं केवल यह निर्दिष्ट कोड कैसे चला सकता हूं?एक्शनबार प्री हनीकॉम

@Override 
protected void onStart() { 
    super.onStart(); 
    ActionBar actionBar = this.getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
} 

किसी भी मदद के लिए धन्यवाद और एक अच्छा दिन है।

उत्तर

13

एंड्रॉइड प्री-हनीकॉम्ब में एक्शनबार नहीं है, इसलिए एक्शनबार से संबंधित कोई भी विधि बस विफल हो जाएगी। आपको code from the Google IO app पर एक नज़र डालना चाहिए, जो हनीकॉम और प्री-हनीकॉम दोनों के लिए एक्शनबार का उपयोग करता है।

बस रखो, यह स्वयं ही काम नहीं करेगा, आपको अपना स्वयं का एक्शनबार कोड शामिल करना होगा।

3

मुझे लगता है कि कोड आत्म व्याख्यात्मक

private static int sdkVersion; 
static 
{ 
    try { 
     sdkVersion = Integer.parseInt(android.os.Build.VERSION.SDK); 
    } catch (Exception ex) { 
    } 
    } 

    /** Device support the froyo (Android 2.2) APIs */ 
    public static boolean isAndroid22() { 
    return sdkVersion >= 8; 
    } 

    /** Device support the Gingerbread (Android 2.3) APIs */ 
    public static boolean isAndroid23() { 
    return sdkVersion >= 9; 
    } 

    /** Device supports the Honeycomb (Android 3.0) APIs */ 
    public static boolean isAndroid30() { 
    return sdkVersion >= 11; 
    } 
4

के बाद से ActionBar न पूर्व मधुकोश पर मौजूद हैं आप कुछ और के साथ करना होगा। एक सुझाव जॉनीबिलसन एक्शनबार लाइब्रेरी का उपयोग करना होगा जो कि जिथब पर पाया जा सकता है। सीधा लिंक: https://github.com/johannilsson/android-actionbar

+0

कि एकदम सही ढंग से काम नहीं करता है .... उदाहरण डाउनलोड के साथ प्रदान की अपने प्रोजेक्ट ( – aProgrammer

68

मैं Android के लिए एक पुस्तकालय में लिखा है जो स्वचालित रूप से एक कस्टम के साथ अपने पूर्व -3.0 गतिविधियों लपेटो जाएगा एक्शन बार डिजाइन पैटर्न के कार्यान्वयन। इसके बाद आप getSupportActionBar() पर कॉल कर सकते हैं जो मूल और कस्टम कार्यान्वयन दोनों के लिए एक सामान्य इंटरफ़ेस प्रदान करेगा, इस पर निर्भर करता है कि आपका एप्लिकेशन एंड्रॉइड का कौन सा संस्करण चल रहा है।

लाइब्रेरी आपको एक ही थीम के माध्यम से इन दोनों एक्शन बार में कस्टम शैलियों को लागू करने की अनुमति देती है।

आप actionbarsherlock.com पर नमूना अनुप्रयोगों के स्क्रीनशॉट के साथ-साथ अधिक जानकारी प्राप्त कर सकते हैं।

लाइब्रेरी 100% खुला स्रोत है और github.com/JakeWharton/ActionBarSherlock पर उपलब्ध है।

+0

भारी करने के लिए है शेरलॉक और 'getSupportActionBar() ' – Greensy

+0

क्या समर्थन नहीं करता है जो अगर मैं नहीं का उपयोग कर SherlockActivity या साधारण गतिविधि लेकिन MapsActivity मीटर के लिए त्रुटियों ... – Csabi

+0

Google ने अब [एक बेहतर समाधान] प्रदान किया है (http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html) –

4

एपीआई गाइड Action Bar के लिए यह कहते हैं से:

कार्यवाही बार संगतता नमूना एप्लिकेशन एक API परत और कार्रवाई बार लेआउट, जो आपके ऐप्लिकेशन ActionBar एपीआई से कुछ का उपयोग करने के लिए है और यह भी पुराने संस्करणों का समर्थन की अनुमति देता है प्रदान करता है कस्टम एक्शन बार लेआउट के साथ पारंपरिक टाइटल बार को बदलकर एंड्रॉइड का।

आप इसे एंड्रॉइड 4.1 (एपीआई 16) नमूने installing द्वारा प्राप्त कर सकते हैं।

ग्रहण में

तब:

  1. फ़ाइल> नया> परियोजना
  2. एंड्रॉयड> Android नमूना परियोजना
  3. चेक एंड्रॉयड 4।1
  4. ActionBarCompat करें
+0

आप मेरा दिन बचाओ! बड़ा धन्यवाद। – diewland

+1

एक्शनबैर कॉम्पैक्ट प्रोजेक्ट में सेट नहीं है डिस्प्लेहोमएस्पेनएबल –

+1

@ इगोरगानापोलस्की हां, ऐसा करता है, मैं इसे अपने प्रोजेक्ट में काम कर रहा हूं: getSupportActionBar()। setDisplayHomeAsUpEnabled (true); –

3

संशोधन 18 के रूप में Android Support library वापस एपीआई स्तर 7. को ActionBar समर्थन शामिल है यह अब सिफारिश की जिस तरह से 2.1 ऊपर से Android के सभी संस्करणों के लिए ActionBar समर्थन करने के लिए है और काफी आसान है तीसरे पक्ष के पुस्तकालयों या अन्य हैक्स से उपयोग करें।

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