2013-08-22 9 views
7

मैं वर्तमान में एंड्रॉइड 4.3 के लिए विकसित कर रहा हूं।
पृष्ठभूमि:
मैं तीन अलग-अलग टुकड़ों के बीच स्क्रॉल करने के लिए पेज व्यूअर का उपयोग कर रहा हूं। मेरा दूसरा खंड (टैब 2) में XMLMap SupportagFagagment और अन्य सामग्री के साथ है। नीचे दिखाया गया है:
My problem http://imageupload.co.uk/files/vrhg1e06x977rkm1vhmd.jpg
मेरे प्रयास:
जबकि वेब मैंने देखा है कि SupportMapFragment के लिए मैं FragmentActivity जो FragmentPagerAdapter के लिए लागू नहीं होता है की जरूरत खोज। मुझे उपयोगकर्ता को मानचित्र को नियंत्रित करने की क्षमता रखने के साथ-साथ खंड में शेष सामग्री को नियंत्रित करने की आवश्यकता है।
मेरा प्रश्न:
फ्रैगमेंट में अधिक सामग्री रखते हुए मैं ViewPager के साथ SupportMapFragment का उपयोग कैसे कर सकता हूं?मानचित्र V2 viewPager

मेरी कोड के बारे में अधिक: GetItem FragmentPagerAdapter अंदर मैं सिंगलटन टुकड़े (प्रत्येक टुकड़ा एक वर्ग है) इसलिए मैं इंटरनेट के बाद से मेरी कक्षा SupportMapFragment विस्तार नहीं कर सकते क्योंकि पर कोई समाधान नहीं मिल सकता है लौटने कर रहा हूँ में इसमें अधिक डेटा है।

उत्तर

21

एंड्रॉइड 4.2 (प्री-जेली के लिए समर्थन लाइब्रेरी में) के बाद से आप nested fragments का उपयोग कर सकते हैं।

आप इस तरह टुकड़ा बनाने का तरीका देख सकते हैं:

public class MyFragment extends Fragment { 

    private SupportMapFragment fragment; 
    private GoogleMap map; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.layout_with_map, container, false); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     FragmentManager fm = getChildFragmentManager(); 
     fragment = (SupportMapFragment) fm.findFragmentById(R.id.map_container); 
     if (fragment == null) { 
      fragment = SupportMapFragment.newInstance(); 
      fm.beginTransaction().replace(R.id.map_container, fragment).commit(); 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (map == null) { 
      map = fragment.getMap(); 
      map.addMarker(new MarkerOptions().position(new LatLng(0, 0))); 
     } 
    } 
} 

here से नकल कोड से ऊपर।

प्रभावशाली नोट: आपका कस्टम Fragments के लेआउट में <fragment> टैग नहीं हो सकता है।

+0

फिर map_container की सामग्री क्या है? –

+0

@AdrianOlar 'map_container' आमतौर पर' FrameLayout' के रूप में होता है जो उपरोक्त उदाहरण में कोड के माध्यम से जोड़े गए टुकड़े होस्ट करेगा। –

+0

आपके उत्तर के लिए बहुत बहुत धन्यवाद, वास्तव में सहायक। –

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