जाँच करें कि क्या गतिविधि के परिणाम के लिए कॉल किया गया है


83

क्या यह जानना संभव है कि क्या कुछ गतिविधि को परिणाम के लिए बुलाया गया है, का उपयोग करके startActivityForResult()या यदि केवल उपयोग करना शुरू किया गया था startActivity()?

मुझे इस पर नियंत्रण करने की आवश्यकता है, यदि इसके परिणाम के लिए कहा जाता है तो व्यवहार अलग होगा।

जवाबों:


166

जब आपकी गतिविधि शुरू हो गई थी तो लक्ष्य गतिविधि में startActivity()एक getCallingActivity()विधि द्वारा वापस आ जाएगी null

जब इसे कॉल किया गया तो यह startActivityForResult()कॉलिंग गतिविधि का नाम लौटाएगा।

इसके लिए डॉक्स देखें getCallingActivity():

उस गतिविधि का नाम लौटाएँ जिसने इस गतिविधि को लागू किया है। यह वह है जिसमें डेटा setResult()भेजा जाएगा। आप इस जानकारी का उपयोग यह प्रमाणित करने के लिए कर सकते हैं कि प्राप्तकर्ता को डेटा प्राप्त करने की अनुमति है।

नोट: यदि कॉलिंग गतिविधि परिणाम की उम्मीद नहीं कर रही है (अर्थात यह उस startActivityForResult(Intent, int)फॉर्म का उपयोग नहीं किया है जिसमें अनुरोध कोड शामिल है), तो कॉलिंग पैकेज शून्य हो जाएगा।

रिटर्न

गतिविधि का घटक नाम जो आपके उत्तर को प्राप्त करेगा, या यदि कोई नहीं, तो अशक्त।


1
यदि आप गतिविधि की शुरुआत: FLAG_ACTIVITY_NEW_TASK से करते हैं, तो यह काम नहीं करता है :( (मुझे एक त्रुटि हैंडलर में संदर्भ से बाहर लॉगिन गतिविधि शुरू करनी थी)। कोई अन्य विचार? धन्यवाद!
bentzy

यह तब काम नहीं करता है जब गतिविधि को एक टुकड़े के साथ शुरू किया जाता है: खंड।
मारियो Lenci

@MarioLenci यह मेरे लिए सही ढंग से काम करता है। कोई फर्क नहीं पड़ता कि मैं इसे गतिविधि या टुकड़े से शुरू करता हूं।
रोबोर

@MarioLenci क्योंकि जब आप एक टुकड़े में होते हैं, तो आपको getActivity().startActivityFor…उस टुकड़े से कॉल करने की आवश्यकता नहीं होती है जिसे आपको startActivityForResultसीधे करना पड़ता है।
मार्टिन मार्कोसिनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.