2012-11-18 23 views
61

से getSupportFragmentManager() को कॉल नहीं कर सकता है मेरे पास एक गतिविधि है जिसमें एक टुकड़ा है।गतिविधि

एक्सएमएल:

<fragment android:name="com.example.androidcalculator.ResultFragment" 
      android:id="@+id/result_fragment" 
      android:layout_weight="1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

और मैं गतिविधि में एक विधि से ResultFragment से कोई विधि कॉल करना चाहते हैं, लेकिन getSupportFragmentManager "मौजूद नहीं है":

FragmentManager fragMan = getSupportFragmentManager(); 

मैं इस हल कर सकते हैं कैसे ?

उत्तर

159

आपकी गतिविधि समर्थन पुस्तकालय से FragmentActivity विस्तार नहीं करता है, इसलिए विधि सुपर क्लास

में मौजूद आप api 11 लक्षित कर रहे हैं नहीं है या इसके बाद, आप Activity.getFragmentManager बजाय इस्तेमाल कर सकते हैं।

3

आयात

import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
+17

आयात के बजाय FragementAvtivity का विस्तार यहां आयात पर्याप्त नहीं है - आपको 'फ्रैगमेंट एक्टिविटी' से भी उत्तराधिकारी होना है। –

12

, माता पिता से वर्तमान गतिविधि मिलता तो इस कोड

getActivity().getSupportFragmentManager() 
+0

FragmentManager fragMan = getFragmentManager(); – MrPickles7

-2

मैं FragmentActivity उपयोग किए थे TabAdapter = नए TabPagerAdapter (((FragmentActivity) getActivity())। GetSupportFragmentManager());

33

गतिविधि

के बजाय AppCompatActivity के लिए कक्षा का विस्तार
+1

स्वच्छ और सरल, धन्यवाद! – Matteo

1

सीधे शब्दों का प्रयोग करें जब MainLayout में बढ़ा-चढ़ाकर कास्टिंग या getActivity() का उपयोग टुकड़ा तक पहुँचने

FragmentManager fm = getActivity().getSupportFragmentManager(); 

हमेशा याद रखें।

0

आप एक कोड है जो टुकड़ा (गतिविधि) के संदर्भ में मौजूद नहीं खुराक, एक एडाप्टर मान लिखते हैं, तो आप अपने संदर्भ अनुकूलक में परिवर्तित कर सकते हैं ActivityFragment की तरह:

FragmentActivity activity = (FragmentActivity) mContext; FragmentManager manager = activity.getSupportFragmentManager();

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