2011-08-08 16 views
10

मुझे आश्चर्य है कि क्या मैं अनुरोध कोड और परिणाम कोड की अवधारणाओं को समझ रहा हूं? असल में, मेरे पास एक गतिविधि से जुड़े एक मनमाना पूर्णांक (अनुरोध कोड) है। उदाहरण के लिए, Notepad tutorial में, हमएंड्रॉइड: अनुरोध कोड और परिणाम कोड

private static final int ACTIVITY_CREATE=0; 
private static final int ACTIVITY_EDIT=1; 

हम तो startActivityforResult (आशय, requestCode) का उपयोग करता है, उदा एक गतिविधि शुरू कर दिया है "नोट बनाएं" गतिविधि। हम उस गतिविधि में कुछ करते हैं और परिणाम कोड लौटाते हैं।

अभिभावक गतिविधि में हम परिणाम कोडेक्टऑक्ट (अनुरोध कोड, परिणाम कोड, इरादा) के साथ परिणाम कोड का पता लगाते हैं। इसके बाद हम अनुरोध कर सकते हैं कि कौन सी गतिविधि वापस की जा रही है, परिणामस्वरूप उस गतिविधि के परिणाम को देखने के लिए कोड और डेटा वापस करने के लिए "अतिरिक्त" का इरादा है।


क्या अंतर्निहित परिणाम कोड के बारे में कुछ खास है, जैसे RESULT_CANCELED? documentation on the developer site यह सुझाव देता है कि अंतर्निहित परिणाम केवल पूर्णांक हैं।

और ऐसा लगता है कि यह वास्तव में गन्दा हो सकता है? उदाहरण के लिए, यदि मेरे पास लॉन्च करने के लिए 10 संभावित गतिविधियां थीं, तो मुझे विशाल पर एक्टिविटी रिसेट फ़ंक्शन होना होगा ताकि यह जांच सके कि कौन सी गतिविधि वापस आ रही है, है ना?

उत्तर

11

क्या अंतर्निहित परिणाम कोड के बारे में कुछ खास है, जैसे RESULT_CANCELED? डेवलपर साइट पर प्रलेखन लगता है कि अंतर्निहित परिणाम केवल पूर्णांक हैं।

हां। ये कोड "मानक" प्रतिक्रियाएं हैं। उदाहरण के लिए, यदि आपके द्वारा शुरू की गई गतिविधि RESULT_CANCELED (विशेष रूप से, एक ओएस गतिविधि या कैमरा जैसे मानक ऐप) लौटाती है, तो इसका मतलब है कि गतिविधि रद्द कर दी गई थी। दस्तावेजों के अनुसार इन मानक परिणामों का व्याख्या किया जाना चाहिए। वास्तव में, आपकी गतिविधियों को इन मानक परिणामों का उपयोग करना चाहिए (ताकि अन्य ऐप डेवलपर्स के पास आपकी गतिविधियों को शुरू करने में आसान समय हो) जब तक ऐसा करने का कोई मजबूत कारण न हो।

और ऐसा लगता है कि यह वास्तव में गन्दा हो सकता है? उदाहरण के लिए, यदि मैं में लॉन्च करने के लिए 10 संभावित गतिविधियां थीं, तो मुझे एक गतिविधि पर एक्टिविटी रिसेट फ़ंक्शन पर देखना होगा कि कौन सी गतिविधि लौटाई जा रही है, क्या मैं नहीं?

हां। इन्हें संभालने के लिए एक स्विच स्टेटमेंट का उपयोग करें।

+0

धन्यवाद, यह वास्तव में मेरे लिए इसे साफ़ कर दिया! –

+0

यदि आपको दो मानक परिणाम कोड से अधिक उपयोग करना है, तो अपना पहला कस्टम परिणाम कोड 'Activity.RESULT_FIRST_USER'' के साथ शुरू करें, यानी 'स्थिर अंतिम int MY_RESULT = Activity.RESULT_FIRST_USER' और फिर' स्थिर अंतिम int MY_OTHER_RESULT = MY_RESULT + 1' – kap

1

पूर्णांक के बारे में कुछ खास नहीं है - वे स्थिरांक केवल एक सम्मेलन हैं। आपका onActivityResult एक एकल स्विच स्टेटमेंट हो सकता है जो उनके साथ निपटने के तरीकों के परिणाम भेजता है ... इसके लिए विशाल होने की आवश्यकता नहीं है। निश्चित रूप से, प्रतीकात्मक स्थिरांक का उपयोग करना चाहिए, जैसा कि ऐसा प्रतीत होता है कि आप हैं।

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