android - onActivityResult not being called after FragmentActivity -


मेरे पास एक गतिविधि ए है जो कि startActivityForResult () का उपयोग कर एक गतिविधि बी (फ्रैग्मेंट एक्टिविटी) कॉल करता है। क्रियाकलाप बी से पहले समाप्त () पर कॉल करके, मैं setResult () का उपयोग करता हूं इस सब के बावजूद, onActivityResult () नहीं कहा जाता है मुझे यकीन नहीं है कि मैं क्या कर रहा हूं, क्योंकि मैं कुछ अपरंपरागत नहीं कर रहा हूं, या यह एक एंड्रॉइड बग है।

यहां पर कुछ सुझावों को देखकर मैंने यह देखा है मेरे पास android: launchMode = "single instance" और android: noHistory = "true" मेरे मैनिफ़ेस्ट फ़ाइल में कहीं भी सेट नहीं है।

कॉलिंग गतिविधि बी से ए:

  आशय इरादा = नए आशय (getActivity (), ActivityB.class); StartActivityForResult (आशय, MY_RESULT);   

गतिविधि समाप्त करना बी:

  आशय इरादा = नया आशय (); setResult (गतिविधि। RESULT_OK, आशय); समाप्त();   

Overriding onActivityResult () गतिविधि में ए:

  @Override सार्वजनिक शून्य परएक्टिवेटिवेशुल्ट (int requestCode, int resultCode, Intent data ) {टोस्ट। मेक टेक्स्ट (getApplication (), "टोस्ट", टोस्ट। एलएनएनजीएच_एलओजी)। दिखाएं (); }   

1 संपादित करें

मैंने लगभग सभी गतिविधि बी के कोड पर टिप्पणी की (नीचे देखें), ए को बरकरार रखा और समस्या बनी रही। इसलिए, ए निश्चित रूप से कुछ अजीब कर रहा है जो समस्या का कारण बनता है। इससे भी बदतर, मैंने बिना किसी समस्या के अन्य गतिविधियों (उसी कोड का उपयोग करके) किया है! एक विस्तारयोग्य लिस्ट एक्टिविटी फैली है, हालांकि मुझे नहीं पता कि उस कोड में से कोई भी onActivityResult () में समस्या का कारण होगा। Logcat मुझे कुछ उपयोगी नहीं दे रहा है।

यह गतिविधि बी के लिए भावी पीढ़ी के लिए परीक्षण किया गया कोड है (हालांकि ऐसा लगता है कि समस्या ए में है):

 < कोड> पब्लिक क्लास गतिविधिबी फ्रैगमेंट ऐक्टिविटी बढ़ाता है {@ ओवरराइड संरक्षित शून्य को क्रेट पर (बंडल से बचाया गया इंटरस्टैंस) {सुपर.नक्रेट (सहेजे गए इन्स्टेंसस्टेट); setContentView (R.layout.layout_activityb); आशय इरादा = नए आशय (); Intent.putExtra ("डेटा", "गतिविधि बी से नमस्कार"); setResult (गतिविधि। RESULT_OK, आशय); समाप्त(); }}    

यह कोशिश करें और अपने कोड के साथ सत्यापित करें:

ActivityA.java

  सार्वजनिक वर्ग ActivityA गतिविधि को बढ़ाता है {निजी स्थिर अंतिम अंत MY_RESULT = 0; निजी बटन btnStart; @ ओवरराइड संरक्षित शून्य को क्रिएट (बंडल सहेजा गया इन्स्टैंसस्टेट) {सुपर.नक्रेट (सहेजे गए इन्स्टेंसस्टेट); setContentView (R.layout.activity_a); btnStart = (बटन) findViewById (R.id.btnstart); btnStart.setOnClickListener (नया OnClickListener () {@Override सार्वजनिक शून्य पर क्लिक करें (देखें वी) {आशय इरादे = नए आशय (यह, गतिविधि। क्लास); startActivityForResult (इरादे, MY_RESULT);}}); } @ ओवरराइड संरक्षित शून्य पर एक्टिवेटिव रिजल्ट (इंट अनुरोधकोड, इंट परिणाम परिणाम, आशय डेटा) {super.onActivityResult (requestCode, resultCode, डेटा); टोस्ट। मेक टेक्स्ट (getApplication (), डेटा.getStringExtra ("डेटा"), टोस्ट .LENGTH_LONG)। दिखाएं (); }}   

गतिविधि B.java

  सार्वजनिक वर्ग ActivityB FragmentActivity को फैलाता है {सुरक्षित पर शून्य (बंडल सहेजे गए इन्स्टैंसस्टेट) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_b); आशय इरादा = नए आशय (); Intent.putExtra ("डेटा", "गतिविधि बी से नमस्कार"); setResult (गतिविधि। RESULT_OK, आशय); समाप्त(); }}   

ध्यान दें: सुनिश्चित करें कि आपने अपनी मेनिफेस्ट फाइल में दोनों गतिविधियों को जोड़ लिया है।

Comments

Popular posts from this blog

php - PDO bindParam() fatal error -

logging - How can I log both the Request.InputStream and Response.OutputStream traffic in my ASP.NET MVC3 Application for specific Actions? -

java - Why my included JSP file won't get processed correctly? -