2009-01-16 11 views
78

मेरे पास नई गतिविधियां लॉन्च करने के बारे में कोई प्रश्न है। यह इस तक उबाल जाता है। मैं एक दृश्य पर 3 टैबएंड्रॉइड: किसी गतिविधि की वापसी को कैप्चर करना

A) contains gMap activity 
B) camera activity 
C) some random text fields. 

आवश्यकता है कि आवेदन पोर्ट्रेट मोड में चलाता है।

सभी 3 टैब अपेक्षित w/कैमरा पूर्वावलोकन सतह (बी) के अपवाद के रूप में काम करते हैं। यह 90 डिग्री घूर्णन है। वे इसे सही बनाने का एकमात्र तरीका है ऐप को लैंडस्केप में सेट करना है जो मेरे सभी टैब को फेंक देता है, और यह काफी ज्यादा काम नहीं करता है। एक नियमित गतिविधि है कि खाली है w/

Intent i = new Intent(this,CameraActivity.class); 
    startActivity(i); 

के अपवाद यह मेरा CameraActivity की शुरूआत के साथ

मेरे कैमरे गतिविधि की जगह:

मेरे समाधान यह है। और यह ठीक काम करता है। मुझे एक रैखिक लेआउट करना था और वास्तविक छवियों की तरह 3 छवियां शामिल थीं, इसलिए स्क्रीन को परिदृश्य में घुमाते हुए और दृश्यों को चित्र के रूप में रखने के दौरान मैं टैब के संचालन की कोशिश कर सकता हूं और नकल कर सकता हूं। उपयोगकर्ता अगले टैब को प्रदर्शित करने के लिए छवियों (बटन) में से एक पर क्लिक कर सकता है। यह मेरा मुद्दा है। इसे एक टैब में 'खाली गतिविधि' पर लौटने वाली मेरी 'कैमरा गतिविधि' से बाहर निकलना चाहिए, जहां मेरी छवि से विलम्बित टैब पर क्लिक करने के लिए इसका अर्थ होना चाहिए।

मुख्य बात यह है कि, जब यह लौटती है, तो यह एक टैब के नीचे एक खाली (काला) पृष्ठ पर लौटती है (क्योंकि यह 'खाली' है)। मैं वापस ईवेंट को उस पृष्ठ पर कैसे कैप्चर कर सकता हूं जिसे गतिविधि कहा जाता है, और फिर देखें कि उन्होंने कौन सी कार्रवाई की है?

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

धन्यवाद,

उत्तर

155

मैं कैसे अपने workround हल करने इतना है कि यह बर्ताव करता है के रूप में आप चाहते हैं का जवाब देने पर ध्यान केंद्रित करेंगे।

किसी गतिविधि में किए गए कार्यों को कैप्चर करने के लिए तीन चरणों की आवश्यकता होती है।

startActivityForResult बजाय startActivity का उपयोग करके एक subactivity के रूप में माध्यमिक गतिविधि (अपने 'कैमरा गतिविधि') लॉन्च करें।

Intent i = new Intent(this,CameraActivity.class);  
startActivityForResult(i, STATIC_INTEGER_VALUE); 

subactivity (कैमरा गतिविधि) के भीतर, बल्कि सिर्फ एक उपयोगकर्ता अलग टैब छवि पर क्लिक करता है जब गतिविधि बंद करने से, आप एक नया आशय बनाने के लिए और की जरूरत है टैब के सूचकांक में शामिल प्रदर्शित करने के लिए जब आप करने के लिए वापस अतिरिक्त बंडल का उपयोग कर अभिभावक ऐप। कैमरे गतिविधि को बंद करने के लिए finish पर कॉल करने से पहले इसे पेरेंट कॉल setResult पर वापस पास करने के लिए।

resultIntent = new Intent(null); 
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue); 
setResult(Activity.RESULT_OK, resultIntent); 
finish(); 

अंतिम चरण बुला गतिविधि में है, onActivityResult ओवरराइड कैमरा गतिविधि से कॉलबैक के लिए सुनने के लिए। आपको प्रदर्शित होने वाले टैब की अनुक्रमणिका निर्धारित करने के लिए लौटाए गए इरादे से अतिरिक्त प्राप्त करें।

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data); 
    switch(requestCode) { 
    case (STATIC_INTEGER_VALUE) : { 
     if (resultCode == Activity.RESULT_OK) { 
     int tabIndex = data.getIntExtra(PUBLIC_STATIC_STRING_IDENTIFIER); 
     // TODO Switch tabs using the index. 
     } 
     break; 
    } 
    } 
} 
+3

आप अनुरोध कोड पर क्यों स्विच करते हैं तो जांच करें कि अनुरोध = = RESULT_OK? संपादित करें: कभी नहीं, मैं अनुरोध कोड/परिणाम कोड अंतर देखता हूं। – varikin

+1

क्या मैं इसे * AsynkTask' के साथ * दूसरी गतिविधि * के रूप में कर सकता हूं? –