2014-12-28 5 views
5

मैं इस ट्यूटोरियल का पालन कर रहा था - http://developer.android.com/training/implementing-navigation/ancestral.html - ऊपर नेविगेशन को लागू करने के लिए। फ़ोन पर बैक बटन दबाकर उपयोगकर्ता के समान क्रमबद्ध करें, लेकिन 'अप' बटन दबाए जाने पर ऑनबैकप्रेस() विधि आग नहीं होती है। ट्यूटोरियल में वे दिखाते हैं कि आप onOptionsItemSelected() विधि में R.id.home को जाल करते हैं। यह वेब पेज - http://developer.android.com/reference/android/R.id.html - दिखाता है कि R.id.home का मान 16908332 के बराबर होना चाहिए, लेकिन यह मेरे ऐप में नहीं है। नीचे दिए गए कोड में यदि मैं R.id.home का उपयोग करता हूं तो यह विफल हो जाता है। अगर मैं 16908332 में हार्ड-कोड काम करता हूं तो यह काम करता है। मेरे लिए R.id.home 21312330724 पर मूल्यांकन करता है। पृष्ठ के मुताबिक, आरआईडी मानों के सभी 1690 से शुरू होते हैं। मुझे अंतर्निहित मूल्य के लिए मूल्य में हार्ड कोडिंग से नफरत है, लेकिन मुझे यकीन नहीं है कि और क्या करना है कर। क्या इससे सड़क पर समस्याएं आ सकती हैं? क्या मुझसे कुछ गलत हो रही है? क्या यह एक बग है?मूल्यांकन करना R.id.home

ग्रेग

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    //noinspection SimplifiableIfStatement 
    if (id == R.id.home) {//16908332 
     Intent upIntent = NavUtils.getParentActivityIntent(this); 

     upIntent.putExtra(CAT_ID, CatID); 
     upIntent.putExtra(USER_ID, UserID); 
     upIntent.putExtra(LIST_ID, ListID); 
     setResult(RESULT_OK, upIntent); 
     NavUtils.navigateUpTo(this, upIntent); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
+5

सूचना है कि आप 'android.id.home', नहीं अपने कस्टम R.id करने के लिए अपने आईडी की तुलना करनी चाहिए होम वैरिएबल, अगर आपके पास एक है। अपनी कक्षा के ऊपरी भाग पर अपने आर आयात नामस्थान की जांच करें। यदि आपके पास अपना कस्टम आर आयात है, तो आपको अपनी आईडी को android.id.home के रूप में सख्ती से परिभाषित करना होगा। – joao2fast4u

+1

धन्यवाद। एंड्रॉइड.R.id.home क्या काम किया था। यह एक नई गतिविधि है जिसमें इसमें लगभग कुछ भी नहीं है, विशेष रूप से कोई कस्टम R.id.home चर नहीं है। एकमात्र आयात सामग्री हैं। इंन्टेंट, support.v4.app.NavUtils, support.v7.app.ActionBarActivity, ओएस बंडल, देखें। मेनू, देखें। मेनूइटम, विजेट। टोस्ट – user1091524

उत्तर

25

आप android एक के साथ उसकी तुलना करने की जरूरत है:

if (id == android.R.id.home){ 
    ... 
} 
संबंधित मुद्दे