2012-01-21 14 views
26

मैं वर्तमान में एंड्रॉइड ऐप पर काम कर रहा हूं। मैं "होम" गतिविधि पर नेविगेट करने के लिए एक्शन बार में ऐप आइकन का उपयोग करना चाहता हूं। मैंने this पृष्ठ पर पढ़ा है कि सभी को करने की आवश्यकता है onOptionsItemSelected जोड़ने और आईडी android.R.id.home आईडी को देखने के लिए है।ऐप आइकन पर क्लिक करने से ऑप्शन इटैम चयन नहीं किया जाता है()

यह वह कोड है जिसे मैंने अपनी गतिविधि में लागू किया है जहां मैं HomeActivity पर वापस जाने के लिए ऐप आइकन दबा देना चाहता हूं।

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

हालांकि, कुछ भी नहीं होता है। डिबगिंग करते समय, मैं देख सकता हूं कि आइकन पर क्लिक करने से onOptionsItemSelected() बिल्कुल ट्रिगर नहीं होता है। क्या मुझे कहीं आइकन के साथ कुछ करना है? अब के रूप में, यह सिर्फ इस AndroidManifest.xml

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
+0

में मदद करता है मैं ही कभी जवाब की कोशिश की है एक विकल्प मेनू में एक्शन बार आइकन पर जिसमें विकल्प मेनू था। अस्थायी रूप से एक विकल्प मेनू जोड़ें और देखें कि क्या आप जो व्यवहार देखते हैं उसे बदलता है या नहीं। – CommonsWare

+0

ध्वज ['FLAG_ACTIVITY_SINGLE_TOP' को पार करने पर विचार करें जो गतिविधि को पुनरारंभ करने से बचाता है] (http://stackoverflow.com/a/18658364/356895)। – JJD

+2

मेरा मुद्दा था कि मैं 'ऑनऑप्शन इटिम सेलेक्टेड' में था, ''roid.R.id.home' के बजाय' r.id.home' था, मुझे पागल हो गया! – mbwasi

उत्तर

40

में सभी डिफ़ॉल्ट है, संकुल के बाद एपीआई स्तर 14 लक्ष्यीकरण के लिए, आप setHomeButtonEnabled()

बुला अपने onCreate में से होम बटन सक्षम करने की आवश्यकता, निम्नलिखित जोड़ें:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    getActionBar().setHomeButtonEnabled(true); 
} 
+4

एक्शनबैरशेलॉक का उपयोग करने वालों के लिए भी इसे जोड़ना चाहता था। 'getSupportActionBar()। setHomeButtonEnabled (true);' – euniceadu

4

आप एंड्रॉयड नए समर्थन-ActionBar (AppCompat) का उपयोग करते हैं तो आप दोनों कॉल करने के लिए की जरूरत है।

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    getActionBar().setHomeButtonEnabled(true); 
} 
getSupportActionBar().setHomeButtonEnabled(true); 
+2

GetActionBar() AppCompat के साथ शून्य लौटाता है ... – bk138

0

मुझे नहीं पता कि हमें एक ही समस्या है या नहीं।

लेकिन, मुझे लगता है कि इस समस्या पर था और अब हल ..

आप HomeActivity में

case android.R.id.home: 
    Intent intent = new Intent(this, HomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    return true; 

जोड़ सकता हूँ? यह झूठ है ..

आप अपने secondActivity पर कि कोड रखना चाहिए .. क्योंकि secondActivity पर अपने घर बटन, नहीं HomeActivity

case android.R.id.home: 
    NavUtils.navigateUpFromSameTask(this); 
    true; 

आशा है कि यह आप