5

मेरे पास एक टुकड़ा है जो SupportMapFragment को बढ़ाता है।समर्थन मैप व्यू SupportMapFragment

public class PlaceMapsFragment extends SupportMapFragment { 
    private GoogleMap mMap; 
    private LatLng mPosFija; 

    public PlaceMapsFragment() { 
     super(); 
    } 

    public static PlaceMapsFragment newInstance(LatLng posicion) { 
     PlaceMapsFragment frag = new PlaceMapsFragment(); 
     frag.mPosFija = posicion; 
     return frag; 
    } 

    @Override 
    public GoogleMap getMap() { 
     // TODO Auto-generated method stub 
     return super.getMap(); 
    } 

    @Override 
    public void onCreate(Bundle arg0) { 
     // TODO Auto-generated method stub 
     super.onCreate(arg0); 
    } 

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

    private void initMap() { 
     UiSettings settings = getMap().getUiSettings(); 
     settings.setAllGesturesEnabled(false); 
     settings.setMyLocationButtonEnabled(false); 

     getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(mPosFija, 16)); 
     getMap().addMarker(
       new MarkerOptions().position(mPosFija) 
         .icon(BitmapDescriptorFactory 
           .fromResource(R.drawable.marker))); 
    } 

} 

अब मैं MapView कि स्वचालित रूप से इतना है कि मैं नक्शा करने के लिए मेरी कार्यक्षमता जोड़ सकते हैं उत्पन्न होता है refernce करना चाहते हैं।

जब मैं initMap(); करने की कोशिश मैं मिल NullPointerException

त्रुटि:

12-10 02:54:20.171: E/AndroidRuntime(4339): FATAL EXCEPTION: main 
12-10 02:54:20.171: E/AndroidRuntime(4339): java.lang.NullPointerException 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at maps.ar.b.a(Unknown Source) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at maps.y.h.a(Unknown Source) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at maps.y.au.a(Unknown Source) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at maps.y.ae.moveCamera(Unknown Source) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at com.google.android.gms.maps.internal.IGoogleMapDelegate$Stub.onTransact(IGoogleMapDelegate.java:83) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.os.Binder.transact(Binder.java:297) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at com.google.android.gms.maps.internal.IGoogleMapDelegate$a$a.moveCamera(Unknown Source) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at com.google.android.gms.maps.GoogleMap.moveCamera(Unknown Source) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at com.m7.nomad.PlaceMapsFragment.initMap(PlaceMapsFragment.java:55) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at com.m7.nomad.PlaceMapsFragment.onCreateView(PlaceMapsFragment.java:46) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at com.m7.nomad.PlaceActivity$TabManager.onTabChanged(PlaceActivity.java:153) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.widget.TabHost.invokeOnTabChangeListener(TabHost.java:379) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.widget.TabHost.setCurrentTab(TabHost.java:364) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:540) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.view.View.performClick(View.java:3591) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.view.View$PerformClick.run(View.java:14263) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.os.Handler.handleCallback(Handler.java:605) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.os.Looper.loop(Looper.java:137) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at android.app.ActivityThread.main(ActivityThread.java:4507) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
12-10 02:54:20.171: E/AndroidRuntime(4339):  at dalvik.system.NativeStart.main(Native Method) 
+0

कृपया अपना लॉगकैट पोस्ट करें – nhaarman

+0

@Niek ने इसे –

+0

जोड़ा है क्या आपने यह त्रुटि हल की है? मुझे एक ही समस्या है: एस –

उत्तर

8

यह एक उम्मीद behabiour है।

आप getMap() पर कॉल कर सकते हैं केवल Fragment onCreateView() के माध्यम से चला गया है, अन्यथा यह आपको null देगा। यदि Google Play सेवाएं उपलब्ध नहीं हैं तो आप null भी प्राप्त कर सकते हैं।

दूसरे शब्दों में, initMap()onResume() पर कॉल करें।

आप अधिक here देख सकते हैं।

उम्मीद है कि यह मदद करता है!

+1

मुझे अभी भी एक ही त्रुटि मिल रही है। –

6

मैंने अंत में इसे हल किया, आपको getMap() ओवरराइड करने की आवश्यकता नहीं है और आपको mMap चर की आवश्यकता नहीं है, GoogleMap कक्षा में शामिल है। अंत में आप onResume में initMap() कॉल करने की आवश्यकता:

public class PlaceMapsFragment extends SupportMapFragment { 
    private LatLng mPosFija = new LatLng(37.878901,-4.779396); 

    public PlaceMapsFragment() { 
     super(); 
    } 

    public static PlaceMapsFragment newInstance(LatLng posicion) { 
     PlaceMapsFragment frag = new PlaceMapsFragment(); 
     frag.mPosFija = posicion; 
     return frag; 
    } 

    @Override 
    public void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    initMap(); 
    } 



    @Override 
    public void onCreate(Bundle arg0) { 
     // TODO Auto-generated method stub 
     super.onCreate(arg0); 
    } 

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

    private void initMap() { 
     UiSettings settings = getMap().getUiSettings(); 
     settings.setAllGesturesEnabled(false); 
     settings.setMyLocationButtonEnabled(false); 

     getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(mPosFija, 16)); 
     getMap().addMarker(
       new MarkerOptions().position(mPosFija) 
         .icon(BitmapDescriptorFactory 
           .fromResource(R.drawable.marker))); 
    } 

} 

आशा है कि यह (मेरे जैसे: डी) अन्य लोगों को गूगल मैप्स एपीआई का v2 के साथ शुरू कर रहे हैं कि मदद करता है।

0

समस्या क्रिएटिव्यू में है। आप super.onCreateView() को कॉल करना भूल गए हैं। this

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