2017-06-19 16 views
5

मैं जानना चाहता हूं कि onActivityResult() पर फ्रैगमेंट के अंदर उपयोग करना संभव है और यदि हां तो यह कैसे काम करता है तो कृपया उदाहरण के साथ समझाएं।मैं फ्रैगमेंट के अंदर OnActivityResult को कैसे कॉल कर सकता हूं और यह कैसे काम करता है?

+0

यदि आप खंड से गतिविधि शुरू कर रहे हैं तो आप गतिविधि –

+1

में OnActivityResult का उपयोग कर सकते हैं हां आप कर सकते हैं। खंड में मेथडोड पर एक्टिविटी रिसेट को ओवरराइड करें और super.onActivityResult पर टिप्पणी करें और इस विधि में आप जो करना चाहते हैं उसे काम करें। अगर आपको नहीं मिला तो मुझे कैसे बताएं। –

+0

@ रमेश कुमार आप उदाहरण के साथ मुझे समझा सकते हैं। यह मेरे लिए बल्लेबाज भी समझने के लिए बल्लेबाज है। –

उत्तर

6

में परिणाम हो आप कहेंगे:

startActivityForResult(i, 1); 

और उसके बाद:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //super.onActivityResult(requestCode, resultCode, data); comment this unless you want to pass your result to the activity. 
} 
1

हाँ आप Fragment.like इस

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
super.onActivityResult(requestCode, resultCode, intent); 
// perform your action here 
} 

अंदर OnActivityResult का उपयोग अब आप गतिविधि में इस कोड को इस

getActivity().startActivityForResult(). 
+2

यह गलत है। उसे getActivity() शुरू करने की आवश्यकता नहीं है। StartActivityForResult(), इसके बजाय उसे केवल "startActivityForResult()" को कॉल करना चाहिए और फिर अपने टुकड़े में "AtctivityForResult()" को कॉल करना होगा क्योंकि खंड उन तरीकों को कॉल कर सकता है क्योंकि कोई समस्या नहीं होगी। – HaroldSer

1

उपयोग की तरह onActivityResult कॉल कर सकते हैं।

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 
    Fragment fragment = (Fragment) getSupportFragmentManager().findFragmentByTag(childTag); 
    if (fragment != null) { 
     fragment.onActivityResult(requestCode, resultCode, intent); 
    } 
} 
2

निश्चित रूप से यह काम करेगा, यह गतिविधियों में समान काम करेगा। आप startActivityForResult(intent, requestCode); फोन और सामान्य रूप से है

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
} 
0

अगर आप टुकड़ा में startActivityForResult() कहते हैं, परिणाम माता-पिता के लिए दिया जाता गतिविधि।

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
super.onActivityResult(requestCode, resultCode, intent);//will deliver result to desired fragment. 
} 

कैसे काम करता है है

यदि आप देखते हैं गतिविधि में requestCode यह 655,545 तरह होगा, अब

super.onActivityResult() वांछित टुकड़ा और अनुरोध कोड की गणना करेगा।

अगर ViewPager वांछित टुकड़ा सूचकांक में अपने टुकड़ा

requestCode>>16 

का उपयोग कर पाया जाता है और requestCode requestCode&0xffff से पाया जाता है।

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