2013-02-11 12 views
5

के बीच स्वैप करें, मैं एक सूची खंड और उपयोगकर्ता के द्वारा एक एक्शनबार बटन दबाकर उपयोगकर्ता के टुकड़े के बीच स्विच करने में सक्षम होना चाहता हूं। वर्तमान में मैं उनके बीच बस ठीक कर सकता हूं लेकिन वास्तविक GoogleMap ऑब्जेक्ट को टुकड़े से प्राप्त करने का प्रयास करते समय मैं एक शून्य सूचक में भाग रहा हूं। जब मैं कैमरे को आजमाकर ले जाता हूं तो यह GoogleMap ऑब्जेक्ट को शून्य और उस कोड को छोड़ने के कारण नहीं चलता है। मुझे यकीन नहीं है कि क्या इस तथ्य के कारण यह है कि मैं वास्तव में कभी भी एक्सएमएल से फ्रैगमेंट नहीं बनाता बल्कि बल्कि कोड का उपयोग कर रहा हूं? मेरा कोड निम्नानुसार है:एंड्रॉइड मैप्स v2 खंड और सूचीफ्रेम

public class MapFragment extends SherlockMapFragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View root = super.onCreateView(inflater, container, savedInstanceState); 
     return root; 
    } 

} 

    @Override 
    public void swapFragments() { 
     FragmentManager fm = getSupportFragmentManager(); 
     FragmentTransaction transaction = fm.beginTransaction(); 
     if (listFragment.isVisible()) { 
      sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
      transaction.replace(R.id.root, mapFragment); 
     } else { 
      sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
      transaction.replace(R.id.root, listFragment); 
     } 
     transaction.commit(); 
    } 

    @Override 
    public void setupMapFragment() { 
     mapFragment = new MapFragment(); 
     mMap = mapFragment.getMap(); 
     if (mMap != null) { 
      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
        new LatLng(BuzzbabaApplication.latitude, 
          BuzzbabaApplication.longitude), 14)); 
     } 
    } 

उत्तर

3

मैं भी इस समस्या में भाग गया। समस्या का कारण बनता है, जैसा कि आपने बताया है, क्योंकि आप गतिशील रूप से MapView लोड कर रहे हैं। इसका अर्थ यह है कि MapMap ने GoogleMap ऑब्जेक्ट लोड से पहले लोडिंग समाप्त कर दी है।

एक GoogleMap केवल getMap() जब अंतर्निहित नक्शे प्रणाली भरी हुई है और टुकड़ा में अंतर्निहित दृश्य मौजूद है

(http://developer.android.com/reference/com/google/android/gms/maps/SupportMapFragment.html) का उपयोग कर

मेरे समाधान एक का निर्माण करना था प्राप्त किया जा सकता एक्सएमएल में नक्शा खंड। इसका अर्थ यह है कि जब दृश्य लोड हो गया है, तो GoogleMap ऑब्जेक्ट भी लोड हो चुका है और संदर्भित किया जा सकता है।

+0

हम्म ... इसलिए वर्तमान में मेरा मुख्य लेआउट सिर्फ एक फ्रेमलाउट है जिसका उपयोग मैं अलग-अलग सूची टुकड़ों को रखने के लिए करता हूं, मैं वहां नक्शा टुकड़ा डालने से बचना चाहता था क्योंकि जब तक वे अनिवार्य रूप से इसे छुपाएंगे, तब तक वे इसे तुरंत छुपाएंगे कुछ, लेकिन क्या यह एकमात्र विकल्प है? – egfconnor

+1

कभी नहीं, मैंने ऑनएक्टिविटी में मैपफ्रैगमेंट में कॉलबैक जोड़ा है जो संकेत देता है कि GoogleMap शून्य नहीं है और तैयार है। ऐसा करने के लिए एक सुरक्षित जगह की तरह लगता है। – egfconnor

+0

हाँ कॉलबैक जोड़ना इसके बारे में भी जाने का एक अच्छा तरीका है। अच्छा समाधान –

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