2013-04-22 15 views
22

मैंने अपनी एक्शन बार सेट की है लेकिन कुछ भी नहीं होता है जब मैं होम अप बटन पर क्लिक करता हूं। नीचे दिए गए दो विकल्प सक्षम हैं, इसलिए यह स्वचालित रूप से घरेलू गतिविधि पर नहीं जाना चाहिए?एंड्रॉइड एक्शन बार होम बटन

ab.setHomeButtonEnabled(true); 
ab.setDisplayHomeAsUpEnabled(true); 

कार्यवाही बार

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

    final String[] activities; 
    Resources res = getResources(); 
    activities = res.getStringArray(R.array.activities); 

    ActionBar ab = getActionBar(); 
    ab.setHomeButtonEnabled(true); 
    ab.setDisplayHomeAsUpEnabled(true); 
    ab.setTitle(R.string.app_name); 
    ab.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    ab.show(); 

    /** Create an array adapter to populate dropdownlist */ 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, activities); 

    /** Setting dropdown items and item navigation listener for the actionbar */ 
    getActionBar().setListNavigationCallbacks(adapter, navigationListener); 

    /** Enabling dropdown list navigation for the action bar */ 
    getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    return true; 
} 
+0

इस लिंक में कोड को चेक करें यह सहायक होगा। [कोड के लिए लिंक] (http://stackoverflow.com/questions/11304483/proper-way-to-handle-action-bar-up-button/37692750#37692750) –

उत्तर

52

के रूप में अन्य लोगों ने कहा है, व्यवहार स्वचालित रूप से नहीं होता है: eed अपने ऐप जानता है जब यह दबाया जाता है कि क्या करना है यह सुनिश्चित करना।

हालांकि, मुझे एक और जवाब जोड़ने की आवश्यकता है, क्योंकि वर्तमान उत्तर सभी एंड्रॉइड डिज़ाइन दिशानिर्देशों को तोड़ने - वापस! = होम। the documentation

देख रहे हैं वही तुम सच में कर रहा करे, तो यह की तर्ज पर कुछ है:

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    switch (menuItem.getItemId()) { 
     case android.R.id.home: 
      Intent homeIntent = new Intent(this, HomeActivity.class); 
      homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(homeIntent); 
    } 
    return (super.onOptionsItemSelected(menuItem)); 
} 

जो तुम माता पिता गतिविधि के लिए ले जाएगा, के बजाय सिर्फ वापस ढेर के माध्यम से जाना। मैंने बैक स्टैक को साफ़ करने के लिए Intent.Flag भी जोड़ा है, यह एक उपयोगी गतिविधि है जब घर की गतिविधि में जा रहा है और जब आपके उपयोगकर्ता 'ऊपर' बटन

+0

बहुत धन्यवाद, यही वह है जिसे मैं ढूंढ रहा था, मुझे लगता है कि जब सत्य पर सेट किया जाता है तो यह सिर्फ मुख्य कक्षा में वापस आ जाएगा! – user1875797

+7

+1 "बैक! = होम" (वाई) – Farhan

+2

के लिए +1 मैं उस समय की गणना नहीं कर सकता जब क्लाइंट ने घर बटन को वापस काम करने के लिए जोर दिया है क्योंकि इसे ऐप के आईओएस संस्करण के प्रवाह के अनुरूप होना चाहिए .. – npace

5

आप को परिभाषित करने के लिए यहाँ क्या होता है की जरूरत है:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
     onBackPressed(); 
    } 
    return true; 
} 
0

अपने कोड में ये पंक्तियां जोड़ें:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

    case android.R.id.home: 
     System.out.println("Pressed Back Button"); 
     break; 

    default: 
     return super.onOptionsItemSelected(item); 
    } 
    return false; 
} 
8

तुम भी n - जहां आप जाना यह बताने की आवश्यकता

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    switch (menuItem.getItemId()) { 
    case android.R.id.home: 
     // ProjectsActivity is my 'home' activity 
     super. onBackPressed(); 
     return true; 
    } 
    return (super.onOptionsItemSelected(menuItem)); 
} 
6

हम उपयोग कर रहे हैं तो पीछे की स्टैक को एक गड़बड़ में रोकना बंद कर सकते हैं। के अनुसार सरकारी document में दिए गए AndroidManifast.xml फ़ाइल में हमारे बच्चे गतिविधि में मेटा डेटा को परिभाषित करने के लिए है:

<application ... > 
... 
<!-- The main/home activity (it has no parent activity) --> 
<activity 
    android:name="com.example.myfirstapp.MainActivity" ...> 
    ... 
</activity> 
<!-- A child of the main activity --> 
<activity 
    android:name="com.example.myfirstapp.DisplayMessageActivity" 
    android:label="@string/title_activity_display_message" 
    android:parentActivityName="com.example.myfirstapp.MainActivity" > 
    <!-- The meta-data element is needed for versions lower than 4.1 --> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.example.myfirstapp.MainActivity" /> 
</activity> 

अगर संस्करण 4.1 या इसके बाद के संस्करण है मेटा डेटा को परिभाषित करने की जरूरत नहीं है और आप के लिए है जैसा कि आपने अपने कोड में किया है, अपने एक्शन बार होम बटन को सक्षम करें। बैक बटन कोड का उपयोग करने की कोई ज़रूरत नहीं है और यह मेरे एंड्रॉइड ऐप के साथ ठीक काम कर रहा है: Helper+

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