2012-05-25 26 views
12

मैं अपने ऐप में एक्शनबार में ऊपर बटन के साथ Navigation Pattern लागू करना चाहता हूं।एक्शनबार ऊपर बटन और नेविगेशन पैटर्न

मेरे पास विवरण गतिविधि है, यहां मैं घर, पसंदीदा और खोज स्क्रीन से आ सकता हूं। इसके अलावा मैं ब्राउज़र से इस स्क्रीन को खोल सकता हूं (विशिष्ट यूआरएल को संभालने)। जब उपयोगकर्ता ऊपर बटन दबाता है, तो मैं वापस नेविगेशन अनुकरण करने के लिए फ्लश() विधि का उपयोग करता हूं। लेकिन मामले के लिए, जब उपयोगकर्ता ब्राउज़र से आता है, तो मैं पिछले ब्राउज़र गतिविधि की बजाय होम स्क्रीन खोलना चाहता हूं। मैं कैसे पहचान सकता हूं कि पिछली गतिविधि किसी अन्य ऐप से थी, और होम स्क्रीन पर नेविगेट की गई?

उत्तर

20

ऊपर हमेशा गतिविधि के पदानुक्रमित अभिभावक पर नेविगेट करना चाहिए और पीछे हमेशा अस्थायी रूप से नेविगेट करना चाहिए।

दूसरे शब्दों में आपको पीछे छोड़ना चाहिए जैसा कि है।

ऊपर के लिए, यह हमेशा एक ही स्थान पर जाना चाहिए चाहे इससे कोई फर्क नहीं पड़ता। इसलिए यदि आप आम तौर पर YourListActivity से विवरण गतिविधि में आते हैं, तो ऊपर हमेशा वहां जाना चाहिए चाहे आप कहां से आए हों। आपके विवेकानुसार सबसे अधिक संभावना स्थान क्या है, लेकिन यह हमेशा एक जैसा होना चाहिए।

यदि आप एक गैर-सामान्य स्थान (जैसे ब्राउज़र, दूसरी गतिविधि, विजेट या अधिसूचना) से विवरण गतिविधि में आते हैं तो आपको अपने कार्य स्टैक को फिर से बनाना चाहिए ताकि परिणाम उसी मार्ग में परिणामों का उपयोग करके नेविगेशन हो।

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     Intent upIntent = new Intent(this, YourListActivity.class); 
     if (NavUtils.shouldUpRecreateTask(this, upIntent)) { 
      // This activity is not part of the application's task, so 
      // create a new task 
      // with a synthesized back stack. 
      TaskStackBuilder 
        .from(this) 
        .addNextIntent(new Intent(this, HomeActivity.class)) 
        .addNextIntent(upIntent).startActivities(); 
      finish(); 
     } else { 
      // This activity is part of the application's task, so simply 
      // navigate up to the hierarchical parent activity. 
      NavUtils.navigateUpTo(this, upIntent); 
     } 
     return true; 
    } 
} 

यहाँ लागू नेविगेशन

(http://developer.android.com/training/implementing-navigation/index.html) पर Android प्रशिक्षण है: यहाँ Android डेवलपर प्रशिक्षण से एक उदाहरण है।

आपको NavUtils और TaskStackBuilder के लिए समर्थन लाइब्रेरी की आवश्यकता होगी।

+8

इस विधि का उपयोग करते समय, मूल गतिविधि सभी अतिरिक्त और राज्य खो देती है। क्या आपके पास इसे पुनर्स्थापित करने के लिए वैसे भी है? दिशानिर्देशों के अनुसार – sarunw

+2

(http://developer.android.com/design/patterns/navigation.html), जब कोई सूचना आपको ऐप में गहराई से रखती है तो वापस अस्थायी रूप से नेविगेट नहीं करना चाहिए। जीमेल या कैलेंडर उदाहरण देखें। – Maragues

+0

@art आप मेरा समाधान आज़मा सकते हैं: http://stackoverflow.com/a/20306670/878126 –

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