java - Android代码中的谷歌地图给出空指针异常

标签 java android google-maps

我正在开发我的项目,其中我需要谷歌地图..并且我使用的代码与我之前的应用程序中使用的代码相同。但这次当我打开此 Activity 时,我遇到了空指针异常。

这是我的map.java 文件:-

  public class map extends  FragmentActivity{
 GoogleMap map;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);


    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.map);

    Bundle b=getIntent().getExtras();
    String lat[]=b.getStringArray("lat");
    String log[]=b.getStringArray("log");
    String name[]=b.getStringArray("name");
    FragmentManager fmanager = getSupportFragmentManager();
    Fragment fragment = fmanager.findFragmentById(R.id.map);
    SupportMapFragment supportmapfragment = (SupportMapFragment)fragment;
    map = supportmapfragment.getMap();




    LatLng place[]=new  LatLng[lat.length];
    for(int i=0;i<place.length;i++)
    {
        if(lat[i].equals(""))
            lat[i]="0.0";
        if(log[i].equals(""))
            log[i]="0.0";
         place[i]=new  LatLng(Double.parseDouble(lat[i]),Double.parseDouble(log[i]));
    }
    Marker marker[]=new Marker[lat.length];
    for(int i=0;i<lat.length;i++)
    {
        marker[i] = map.addMarker(new MarkerOptions().position(place[i]).title(name[i]));
    }

        // Move the camera instantly to hamburg with a zoom of 15.
    for(int i=0;i<place.length;i++)
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(place[i], 15));
        // Zoom in, animating the camera.
      map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);


}



  }

我的 XML 文件:-

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".map" >

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment" />

 </RelativeLayout>

我的 list 文件:-

      <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.pumaguard.pumaguard"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

        <permission
        android:name="com.pumaguard.pumaguard.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

       <uses-permission     android:name="com.pumaguard.pumaguard.locationapi.maps.permission.MAPS_RECEIVE" />
       <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
       <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.pumaguard.pumaguard.splash"
            android:label="@string/app_name"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar" >
        </activity>
        <activity
            android:name=".newactivity"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar" >
        </activity>

          <activity
            android:name=".map"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar" >
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyBd7gzE3nKLfbRO5XfDoOtaJc5q1C9RTiA" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
       </application>

      </manifest>

logcat 错误:-

01-24 22:56:01.636: E/AndroidRuntime(835): FATAL EXCEPTION: main
01-24 22:56:01.636: E/AndroidRuntime(835): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pumaguard.pumaguard/com.pumaguard.pumaguard.map}: java.lang.NullPointerException
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.os.Looper.loop(Looper.java:137)
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.app.ActivityThread.main(ActivityThread.java:5103)
01-24 22:56:01.636: E/AndroidRuntime(835):  at java.lang.reflect.Method.invokeNative(Native Method)
01-24 22:56:01.636: E/AndroidRuntime(835):  at java.lang.reflect.Method.invoke(Method.java:525)
01-24 22:56:01.636: E/AndroidRuntime(835):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-24 22:56:01.636: E/AndroidRuntime(835):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-24 22:56:01.636: E/AndroidRuntime(835):  at dalvik.system.NativeStart.main(Native Method)
01-24 22:56:01.636: E/AndroidRuntime(835): Caused by: java.lang.NullPointerException
01-24 22:56:01.636: E/AndroidRuntime(835):  at com.pumaguard.pumaguard.map.onCreate(map.java:62)
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.app.Activity.performCreate(Activity.java:5133)
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-24 22:56:01.636: E/AndroidRuntime(835):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
01-24 22:56:01.636: E/AndroidRuntime(835):  ... 11 more

所以,这是我的代码,请帮助我解决我的问题。 谢谢。

最佳答案

首先不要向所有人展示您的 API key

其次,您应该为每个应用程序生成新的 API key

第三,你可以使用

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

而不是

FragmentManager fmanager = getSupportFragmentManager();
Fragment fragment = fmanager.findFragmentById(R.id.map);
SupportMapFragment supportmapfragment = (SupportMapFragment)fragment;
map = supportmapfragment.getMap();

并告诉我们您在哪一行收到错误,并向我们显示该行。

关于java - Android代码中的谷歌地图给出空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21346603/

相关文章:

android - 使用 Apache 许可版本 2.0 许可的作品是否可以免费使用?

javascript - 创建点击进入实际 map 的 map 示例

javascript - 我的 JavaScript 代码没有渲染我的谷歌地图

java - request.getParameter ("String")始终返回 null。为什么?

java - vert.x 中事件总线的大小

java - 对于Android应用程序来说,c#好还是java好?

angularjs - 将 angularjs ui.map 与地理位置 api 集成

java - 如何在Java中导出高分辨率图像

java - 并发修改异常 : adding to an ArrayList

android - 将数据从一项 Activity 发送回另一项 ANDROID KOTLIN