2012-12-28 17 views
17

संभव डुप्लिकेट लौटने:
How do I know the map is ready to get used when using the SupportMapFragment?Google Play सेवा - SupportMapFragment.getMap() हमेशा अशक्त

मैं वर्तमान में नई मैप्स एपीआई V2 परीक्षण कर रहा हूँ, लेकिन मैं वास्तव में परेशानी हो रही हो रही है यह correclty काम करने के लिए।

मेरी समस्या यह है कि getMap() हमेशा शून्य हो जाता है।

  1. OnCreate()
  2. onResume()
  3. एक हैंडलर है कि नक्शे के बाद कुछ सेकंड कहा जाता है में पहले से ही स्क्रीन
  4. पर दिखाई देता है:

    मैं 3 विभिन्न बिंदुओं में कॉल का परीक्षण किया है

    public class MapActivity extends FragmentActivity { 
    
    private SupportMapFragment mMapFragment; 
    
    @Override 
    protected void onCreate(Bundle arg0) { 
        super.onCreate(arg0); 
          setupMap(); 
    } 
    
    @Override 
    protected void onResume() { 
        super.onResume(); 
        setupMap(); 
        new Handler().postDelayed(new Runnable() { 
    
         @Override 
         public void run() { 
          setupMap(); 
         } 
        }, 5000); 
    } 
    
    private void setupMap() { 
        if (getSupportFragmentManager().findFragmentById(R.id.fragment) == null) { 
        mMapFragment = CustomMapFragment.newInstance(); 
         getSupportFragmentManager().beginTransaction() 
           .add(R.id.map_wrapper, mMapFragment).commit(); 
        } 
        GoogleMap map = mMapFragment.getMap(); 
        if (map != null) { 
         mMapFragment.getMap().getUiSettings().setZoomControlsEnabled(true); 
         mMapFragment.getMap().getUiSettings().setZoomGesturesEnabled(true); 
         mMapFragment.getMap().setMyLocationEnabled(true); 
        } 
    } 
    
    :

यहाँ कोड है

कुछ भी जो मैं गलत कर रहा हूँ?

+0

यह वास्तव में है, शर्म की बात है मुझे लगता है कि खोज समारोह के माध्यम से सवाल :(मैं एक जवाब के रूप में मेरे नमूना वैकल्पिक हल पोस्ट करेंगे भी नहीं मिला है कि धन्यवाद CommonsWare – Goddchen

+0

सबसे पहले, क्या डिवाइस का प्रकार आप इस कोड को चालू कर रहे थे? भौतिक उपकरण, या एमुलेटर (जिसमें प्ले सेवाएं स्थापित नहीं हो सकती हैं) –

उत्तर

47

कॉमन्सवेयर ने लिंक किए गए प्रश्न में कहा है, समस्या केवल SupportMapFragment प्रोग्रामेटिक रूप से बनाते समय और <fragment> XML टैग नहीं बनाते समय होती है।

यदि प्रोग्रामेटिक रूप से बनाया गया है, तो नक्शा onActivityCreated() कॉल में उपलब्ध होगा। तो मेरी वैकल्पिक हल निम्नलिखित है:।!

mMapFragment = new SupportMapFragment() { 
      @Override 
      public void onActivityCreated(Bundle savedInstanceState) { 
       super.onActivityCreated(savedInstanceState); 
       GoogleMap map = mMapFragment.getMap(); 
       if (map != null) { 
        //Your initialization code goes here 
       } 
      } 
     }; 
+0

अच्छा खोज भाई +1 – Sameer

+7

किसी को गैर स्थैतिक आंतरिक टुकड़ा नहीं बनाना चाहिए क्योंकि संकलक स्वचालित रूप से प्रदान करने के लिए निर्माता बना देगा एक वर्ग के रूप में खंड के लिए बाहरी वर्ग। फिर खंड मनोरंजन पर आपको 'इंस्टेंटेशन एक्सेप्शन' मिलेगा क्योंकि खंड के लिए कोई डिफ़ॉल्ट खाली कन्स्ट्रक्टर नहीं है। –

+0

आप यह कैसे कर सकते हैं लेकिन विकल्प भी दे सकते हैं? आमतौर पर हम w को तत्काल ith SupportMapFragment.newInstance (विकल्प); – Deminetix

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