2009-07-14 13 views
5

ब्लैकबेरी में मैं एक स्क्रीन से अगली स्क्रीन पर नेविगेट कर सकता हूं, लेकिन मैं पिछली स्क्रीन पर वापस नेविगेट नहीं कर सकता। एम्यूलेटर में एस्केप कुंजी दबाकर पूरे एप्लिकेशन को समाप्त कर दिया जाता है। क्या एमुलेटर में पिछली स्क्रीन पर जाने के लिए कोई अन्य कुंजी है या वापस नेविगेट करने के लिए कोई कोड है? यदि आप जानते हैं तो कृपया मेरी मदद करें।ब्लैकबेरी में पिछली स्क्रीन पर वापस नेविगेट कैसे करें?

+1

क्या एमुलेटर/सॉफ्टवेयर आप के बारे में पूछ रहे हैं? – brian

उत्तर

16

के रूप में एंड्री कहा, वहाँ एक प्रदर्शन ढेर है, इसलिए यदि आप उन्हें पॉपिंग बिना स्क्रीन धक्का, वे ढेर में रहेगी तो वर्तमान स्क्रीन को बंद करने, पिछली स्क्रीन automattically दिखाया जाएगा, और अगर कोई पिछला है। स्क्रीन, आवेदन बंद हो जाएगा।

हालांकि प्रदर्शन स्टैक में कई स्क्रीन पकड़ना अच्छा नहीं है, इसलिए आप मैन्युअल रूप से नेविगेशन को संभालने के लिए स्क्रीन के अंदर प्रकार के ढेर को कार्यान्वित कर सकते हैं।स्क्रीन ढेर कार्यान्वयन के लिए

सार स्क्रीन वर्ग:

public abstract class AScreen extends MainScreen { 
    Screen prevScreen = null; 

    void openScreen(AScreen nextScreen) { 
     nextScreen.prevScreen = this; 
     UiApplication.getUiApplication().popScreen(this); 
     UiApplication.getUiApplication().pushScreen(nextScreen); 
    } 

    void openPrevScreen() { 
     UiApplication.getUiApplication().popScreen(this); 
     if (null != prevScreen) 
      UiApplication.getUiApplication().pushScreen(prevScreen); 
    } 
} 

नमूना पहले स्क्रीन:

public class FirstScreen extends AScreen implements FieldChangeListener { 

    ButtonField mButton = null; 

    public FirstScreen() { 
     super(); 
     mButton = new ButtonField("Go second screen", ButtonField.CONSUME_CLICK); 
     mButton.setChangeListener(this); 
     add(mButton); 
    } 

    public void fieldChanged(Field field, int context) { 
     if (mButton == field) { 
      openScreen(new SecondScreen()); 
     } 
    } 
} 

नमूना दूसरी स्क्रीन:

public class SecondScreen extends AScreen implements FieldChangeListener { 

    ButtonField mButton = null; 

    public SecondScreen() { 
     super(); 
     mButton = new ButtonField("Go first screen", ButtonField.CONSUME_CLICK); 
     mButton.setChangeListener(this); 
     add(mButton); 
    } 

    public void fieldChanged(Field field, int context) { 
     if (mButton == field) { 
      openPrevScreen(); 
     } 
    } 

    public boolean onClose() { 
     openPrevScreen(); 
     return true; 
    } 
} 
13

ब्लैकबेरी स्क्रीन के ढेर को बनाए रखता है; डिस्प्ले स्टैक

स्क्रीन स्टैक पर पॉप हो गए हैं, और UiAplication के माध्यम से स्टैक को बंद कर दिया गया है। स्टैक से आखिरी स्क्रीन को रोकना डिफ़ॉल्ट रूप से एप्लिकेशन को बंद कर देता है

आप एक UiApplication, नामित MyUiApplication चला रहे हैं, तो आप स्क्रीन ढेर करने के लिए pushScreen फोन करके जोड़ सकते हैं (नई SomeScreen());

स्क्रीन, यदि MainScreen से ली गई, के रूप में सबसे ब्लैकबेरी स्क्रीन हैं, DEFAULT_CLOSE ध्वज के साथ, बनाया जाता है जिसका अर्थ है कि ब्लैकबेरी पर ESCAPE बटन स्वाभाविक रूप से, स्क्रीन बंद हो जाएगा popScreen के कारण() के नाम से जाना । आप निश्चित रूप से किसी भी कीप्रेस या ट्रैकव्हील/ट्रैकबॉल क्लिक के बाद पॉपस्क्रीन() को कॉल कर सकते हैं। स्क्रीन अपने आप को करीब() भी कॉल कर सकती है, जिसका एक ही परिणाम है; स्क्रीन को स्टैक से पॉप किया गया है, एप्लिकेशन को पिछली स्क्रीन पर वापस कर रहा है, या यदि अंतिम स्क्रीन डिस्प्ले स्टैक से पॉप हो जाती है तो एप्लिकेशन को समाप्त कर दिया जाता है।

यदि एप्लिकेशन को यूआईप्लिकेशंस के रूप में नहीं बनाया गया है, या यदि स्क्रीन को प्रारंभ में गैर-यूआई थ्रेड (जैसे पृष्ठभूमि थ्रेड) से डिस्प्ले स्टैक पर धक्का दिया गया था, तो किसी को यह सुनिश्चित करना होगा कि कॉल को बंद करने के लिए कॉल करें स्क्रीन यूआई थ्रेड से भी किया गया है। यह सुनिश्चित करें कि eventLock किसी भी यूआई आपरेशन प्रदर्शन से पहले आवेदन वर्ग पर लिया जाता है बनाने के द्वारा किया जा सकता है (एक आम तौर पर के रूप में अच्छी invokeLater कहेंगे, इस स्थिति में)।

मूल स्क्रीन एक वैश्विक स्क्रीन (मोडहीन, सभी अन्य स्क्रीन के शीर्ष पर) के रूप में ढेर पर पॉपअप गया था, तो यह बंद ढेर की तरह कुछ का उपयोग कर पॉपअप किया जाना चाहिए:

Ui.getUiEngine() .dismissStatus (this);

किसी भी मामले में, अधिभावी OnClose() और पास() व्युत्पन्न स्क्रीन की डिबगिंग और आगे के विश्लेषण के लिए होने वाली अपवाद जाल करने के लिए आप की अनुमति देगा।

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