2011-02-15 17 views
7

से बाहर एक्टिविटी रिसर्च को संभालना मैं Activity शुरू करने के लिए एक सहायक वर्ग बनाने की कोशिश कर रहा हूं और डेवलपर से अपने onActivityResult कोड लिखने और जटिल आंतरिक विवरणों को समाहित करने के लिए वापसी परिणाम (startActivityForResult) प्राप्त करने का प्रयास कर रहा हूं।गतिविधि

अर्थात्: फोन करने वाले का कोड:

MyIntent i = new MyIntent(); 
i.getMyData(new OnData() { public void onData(Bundle data) {....}); 

मैं एक "डमी" Activity MyIntent अंदर बनाने सिर्फ onActivityResult ओवरराइड करने के लिए सक्षम होने के लिए कोशिश की, लेकिन गतिविधि प्रकट में घोषित किए जाने की आवश्यकता है, जो है क्या सहायक वर्ग से बचने की कोशिश करता है। कोई "setOnActivityResult" नहीं है जो एक अच्छा विकल्प होगा।

तो, Activity प्रोग्रामेटिक रूप से कैसे बनाएं और इसे "संलग्न करें" ताकि इसकी वैध स्थिति हो?

new Activity() बनाने के बाद मैं गतिविधि "अटैचमेंट" को कॉल करना चाहता हूं जो आंतरिक है।

+0

क्या आपको इस समस्या का समाधान मिला है? – captaindroid

उत्तर

1

तो, गतिविधि को प्रोग्रामेटिक रूप से कैसे बनाएं और इसे "संलग्न करें" ताकि उसके पास वैध स्थिति हो?

यह संभव नहीं है, क्षमा करें।

मैं एक गतिविधि शुरू करने और अपने स्वयं के onActivityResult कोड लिखने डेवलपर्स से बचने के लिए वापसी परिणाम (startActivityForResult) हो और जटिल आंतरिक विवरण संपुटित करने के लिए एक सहायक वर्ग बनाने की कोशिश कर रहा हूँ।

यह संभव नहीं है, क्षमा करें। निकटतम आप प्राप्त कर सकते हैं कि बारकोड स्कैनर एकीकरण JAR कैसे काम करता है - स्कैनर गतिविधि से प्राप्त परिणाम को डीकोड करने के लिए आप उन्हें onActivityResult() प्रतिनिधि देते हैं।

+1

मैं भी वही चीज़ की कोशिश कर रहा हूं बस http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityResultListener.html मैं कस्टम क्लास में AtctivityResult() विधि को कॉल करने के लिए इसका उपयोग कर रहा हूं लेकिन यह नहीं है काम कर रहा है ... अगर आपके पास कोई विचार है ... तो कृपया पोस्ट करें .. :) –

0

क्या एक साधारण कॉलबैक वैकल्पिक विकल्प हो सकता है? उपयोगकर्ता आपकी लाइब्रेरी के स्थिर क्षेत्र में कॉलबैक रखता है और आपकी लाइब्रेरी आवश्यक होने पर इस कॉलबैक को आह्वान करेगा। सबसे सरल कार्यान्वयन हो सकता है:

YourSdk.staticCallbackField=new OnData() { public void onData(Bundle data) {....}); 
MyIntent i = new MyIntent(); 
startActivity(i); 

जब आप एसडीके पूरा करता है यह काम यह कॉलबैक का आह्वान है:

staticCallbackField.onData(data) 

उपयोगकर्ता गतिविधि बंडल डेटा onActivityResult के बजाय कॉलबैक में मिल जाएगा।

आपको संभावित गतिविधि जीवन चक्र के मुद्दों से अवगत होना चाहिए। उदाहरण के लिए यदि एंड्रॉइड पृष्ठभूमि कॉलबैक में उपयोगकर्ता गतिविधि को पुन: प्रयास करता है तो उसे पुनर्निर्मित किया जाना चाहिए।

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