【问题标题】:null pointer exceptions in android code?android代码中的空指针异常?
【发布时间】:2015-01-06 17:57:01
【问题描述】:

2:10:25.524:E/AndroidRuntime(2019):致命异常:主要 01-06 12:10:25.524: E/AndroidRuntime(2019): 进程: com.kandy, PID: 2019 01-06 12:10:25.524: E/AndroidRuntime(2019): java.lang.RuntimeException:无法启动活动 组件信息{com.kandy/com.kandy.citymap}: java.lang.NullPointerException 01-06 12:10:25.524: E/AndroidRuntime(2019):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 01-06 12:10:25.524: E/AndroidRuntime(2019): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 01-06 12:10:25.524: E/AndroidRuntime(2019): 在 android.app.ActivityThread.access$800(ActivityThread.java:135) 01-06 12:10:25.524:E/AndroidRuntime(2019):在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 01-06 12:10:25.524: E/AndroidRuntime(2019): 在 android.os.Handler.dispatchMessage(Handler.java:102) 01-06 12:10:25.524:E/AndroidRuntime(2019):在 android.os.Looper.loop(Looper.java:136) 01-06 12:10:25.524: E/AndroidRuntime(2019):在 android.app.ActivityThread.main(ActivityThread.java:5017) 01-06 12:10:25.524:E/AndroidRuntime(2019):在 java.lang.reflect.Method.invokeNative(Native Method) 01-06 12:10:25.524:E/AndroidRuntime(2019):在 java.lang.reflect.Method.invoke(Method.java:515) 01-06 12:10:25.524: E/AndroidRuntime(2019):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 01-06 12:10:25.524: E/AndroidRuntime(2019): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 01-06 12:10:25.524:E/AndroidRuntime(2019):在 dalvik.system.NativeStart.main(本机方法)01-06 12:10:25.524: E/AndroidRuntime(2019):原因:java.lang.NullPointerException 01-06 12:10:25.524: E/AndroidRuntime(2019): 在 com.kandy.citymap.onCreate(citymap.java:25) 01-06 12:10:25.524: E/AndroidRuntime(2019):在 android.app.Activity.performCreate(Activity.java:5231) 01-06 12:10:25.524:E/AndroidRuntime(2019):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 01-06 12:10:25.524: E/AndroidRuntime(2019): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)

我正在为这个使用谷歌地图

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;


import android.app.Activity;
import android.os.Bundle;

public class citymap extends Activity {
    GoogleMap gmap;


    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.citymap);



        gmap=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
        gmap.setMapType(GoogleMap.MAP_TYPE_NORMAL);//line 25


        gmap.setMyLocationEnabled(true);


        gmap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(7.2964, 80.6350),12));
        gmap.addMarker(new MarkerOptions().position(new LatLng(7.2964, 80.6350)).title("Kandy"));
}}

【问题讨论】:

  • 我会假设 gmap.setMapType() 是什么导致你的 NPE?那是因为您的地图还没有膨胀,所以 getMap 返回 null。只是猜测。
  • 标记你的行号 25。
  • 首先格式化您的堆栈跟踪,使其真正可读
  • @BeingMIAkashs 标记了它

标签: java android eclipse google-maps android-intent


【解决方案1】:

好的,当您尝试查找 gmap 的视图时(您做对了),然后您立即尝试使用函数 get map()(这里您做错了)获取地图下一个

gmap=((MapFragment)getFragmentManager().findFragmentById(R.id.map));
 gmap.getMap();

当你找到你的东西的视图时,永远不要使用方法(getMap() 或熟悉的东西)!

【讨论】:

    【解决方案2】:

    使用 SupportMapFragment 代替 MapFragment。试试下面的代码sn-p

    SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    
    gmap = fm.getMap();
    

    【讨论】:

      猜你喜欢
      • 2011-10-24
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多