5

एक similar question है जहां एक टुकड़े के संदर्भ को प्राप्त करने के लिए getActivity() का उपयोग करने के लिए सबसे अधिक उत्तर सलाह है, लेकिन अगर खंड अलग हो जाता है तो गतिविधि/संदर्भ का संदर्भ कैसे प्राप्त करें (किस मामले में, getActivity() शून्य वापस आती है)?अलग टुकड़े में संदर्भ/गतिविधि प्राप्त करें?

मेरी स्थिति यह है कि मेरा टुकड़ा एक AsyncTask शुरू करता है, जो पूरा होने पर, onSuccess() मेरे टुकड़े की विधि को कॉल करता है। लेकिन मेरे टुकड़े की onSuccess() विधि को टोस्ट संदेश दिखाने या साझा प्राथमिकताओं तक पहुंचने के लिए एक संदर्भ की आवश्यकता है। तो क्या संदर्भ प्राप्त करने का एक विश्वसनीय तरीका है?

एक तरह से मैं विचार कर रहा हूँ मेरी AsyncTask निर्माता में एक संदर्भ वस्तु गुजरती हैं, और इसे वापस मेरे ऊपर उल्लिखित onSuccess() कॉलबैक विधि के लिए बाहर पारित करने के लिए है - लेकिन एक स्मृति रिसाव में इस परिणाम कर सकते थे?

(। एनबी - एक जवाब here पता चलता है कि कैसे फिर से वर्तमान गतिविधि को पुनः प्राप्त करने के लिए, लेकिन, नहीं है, यह एक वैध संदर्भ की आवश्यकता है)

+0

क्या आपने एपप्लिकेशन कॉन्टेक्स्ट() प्राप्त करने का प्रयास किया? –

+1

ऑनटाच विधि को पहले कहा जाता है, जिसमें आपको गतिविधि प्रतिरक्षा मिल जाएगी, इसे स्टोर करें और इसका उपयोग करें। – Dev

उत्तर

2

उपयोग यह आपके टुकड़ा में:

private Context context; 

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     context = activity; 
    } 

तो संदर्भ का उपयोग जहां आप

+0

धन्यवाद, लेकिन क्या इस दृष्टिकोण के साथ मेमोरी रिसाव का मौका है? –

0

जब आप खंड में प्रवेश करते हैं, तो आपको दृश्य बनाने के बाद संदर्भ को संग्रहीत करना चाहिए।

Context context; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_photos, container, false); 
     MainView = rootView; 
     context = getActivity().getApplicationContext(); 
     return rootView; 
    } 

अपने खंड में उस संदर्भ का उपयोग करें, जहां भी आप चाहें।

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