2013-04-14 5 views
16

किसी गतिविधि में थोड़ा मैपफ्रैगमेंट रखने की कोशिश कर रहा है, लेकिन मुझे इसे काम करने में कुछ परेशानी हो रही है। मुझे पता है कि मैप्स एपीआई और प्ले सेवाएं दोनों सही ढंग से स्थापित हैं, क्योंकि मैंने टेस्ट ट्यूटोरियल किया था और सब कुछ ठीक काम करता था।समर्थन मैपफ्रैगमेंट - फ्रैगमेंट से मैपफ्रैगमेंट

प्रलेखन here प्रलेखन के बाद, मैं निम्न समस्या में भाग रहा हूं: मेरे सेटअपमैपफिड विधि में, मैं या तो getFragmentManager() या getSupportFragmentManager() का उपयोग कर सकता हूं। जब मैं getFragmentManager() का उपयोग करता हूं, तो ग्रहण इसके साथ अच्छा होता है लेकिन जब मैं दौड़ता हूं, तो मुझे NoSuchMethodError मिलता है कि यह तरीका अपरिभाषित है। जब मैं getSupportFragmentManager() चुनता हूं, ग्रहण इसे पसंद नहीं करता है और मुझे त्रुटि देता है "Fragment से MapFragment तक नहीं डाला जा सकता"। तो सौदा क्या है? कोई सुझाव?

private void setUpMapIfNeeded() { 
    //Do a null check to confirm that we have not already instantiated the map. 
    if (mMap == null) { 
     mMap = ((MapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 
     if (mMap != null) { 
      //do things to the map 
      mMap.addMarker(new MarkerOptions().position(LOCATION).title(EXTRA_URL)); 
      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LOCATION,15)); 
      mMap.getUiSettings().setZoomControlsEnabled(false); 
     } 
    } 
} 

मुझे पता है क्या कोई अन्य कोड मैं प्रदान कर सकते हैं तो कृपया मुझे बताएँ और मैं इसे जल्दी से पोस्ट करने के लिए खुशी होगी।

+0

क्या आपके पास R.id.map में क्लास विशेषता है? 'वर्ग =" com.google.android.gms.maps.MapFragment "' –

उत्तर

77

मैं या तो getFragmentManager() या getSupportFragmentManager() प्राप्त कर सकता हूं।

यहां कोई बहस नहीं होनी चाहिए। यदि getSupportFragmentManager() आपके लिए उपलब्ध है, तो आप एंड्रॉइड सपोर्ट पैकेज के टुकड़ों का बैकपोर्ट उपयोग कर रहे हैं, और यह वह तरीका है जिसका आपको उपयोग करना चाहिए।

जब मैं getSupportFragmentManager() को चुनता हूं, ग्रहण इसे पसंद नहीं करता है और मुझे त्रुटि देता है "Fragment से MapFragment तक नहीं डाला जा सकता"।

ऐसा इसलिए है क्योंकि आपको MapFragment का उपयोग नहीं करना चाहिए। आप एंड्रॉइड सपोर्ट पैकेज के टुकड़ों के बैकपोर्ट का उपयोग कर रहे हैं, और इसलिए आपको SupportMapFragment का उपयोग करना होगा।

+0

भगवान मैं वास्तव में वास्तव में मूर्ख महसूस करता हूं। मैं निश्चित रूप से इसके बारे में जानता था, लेकिन स्पष्ट रूप से उन्हें सभी को समर्थन मैपफ्रैगमेंट में नहीं बदला था। मैं MapFragment आयात कर रहा था और SupportMapFragment नहीं। धन्यवाद! मेरी समस्या हल – user2163853

+0

@ user2163853 यहां मूर्खतापूर्ण गलती के लिए भी गिर गया! –

+2

कभी-कभी मूर्खतापूर्ण गलतियों को एक अवधारणा को समझने के लिए दूसरों (शायद नए शौक) की मदद करता है, इसलिए कभी भी मूर्खतापूर्ण महसूस न करें;) – marienke

0

यही वह है जो मुझे करना था, क्योंकि मैं स्तर 11 के तहत काम कर रहा था;

import com.google.android.gms.maps.GoogleMap; 
    import com.google.android.gms.maps.SupportMapFragment; 
    import android.support.v4.app.FragmentActivity; 

    public class MapaActivity extends FragmentActivity { 

    private GoogleMap map; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_mapa); 

     map = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mapa)).getMap(); 
    } 
} 
0

हे बस अपने libs को v4 जार जोड़ने फ़ोल्डर और अपने टुकड़ा पेज में तो निर्माण करने के लिए सिर्फ आयात

आयात android.support.v4.app.FragmentActivity जोड़ने;

आप कर सकते हैं सक्षम FragmentActivity

सार्वजनिक वर्ग MainActivity फैली FragmentActivity LocationListener {

}

लागू करता है और यह भी getSupportFragmentManager() का उपयोग फैली करने के लिए;

SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager()। FindFragmentById (R.id.map);

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