无法创建与谷歌地图API的Andr​​oid项目V2 [英] Can't create project with Google Map android API V2

查看:157
本文介绍了无法创建与谷歌地图API的Andr​​oid项目V2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已阅读文档
https://developers.google.com/maps/documentation/android/start
我在Eclipse中创建项目的android,folow中一步一步的文档,但是当我不能运行的项目。

抽样误差显示java.lang.NullPointerException

错误日志

  15 03-20:13:39.332:D / AndroidRuntime(28930):关闭VM
03-20 15:13:39.332:W / dalvikvm(28930):主题ID = 1:螺纹未捕获的异常退出(组= 0x2b542210)
03-20 15:13:39.352:E / AndroidRuntime(28930):致命异常:主要
03-20 15:13:39.352:E / AndroidRuntime(28930):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.my_ap / com.mrbuoi.my_ap.MainActivity}:显示java.lang.NullPointerException
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.app.ActivityThread.access $ 600(ActivityThread.java:127)
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1158)
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.os.Handler.dispatchMessage(Handler.java:99)
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.os.Looper.loop(Looper.java:137)
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.app.ActivityThread.main(ActivityThread.java:4441)
03-20 15:13:39.352:E / AndroidRuntime(28930):在java.lang.reflect.Method.invokeNative(本机方法)
03-20 15:13:39.352:E / AndroidRuntime(28930):在java.lang.reflect.Method.invoke(Method.java:511)
03-20 15:13:39.352:E / AndroidRuntime(28930):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
03-20 15:13:39.352:E / AndroidRuntime(28930):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
03-20 15:13:39.352:E / AndroidRuntime(28930):在dalvik.system.NativeStart.main(本机方法)
03-20 15:13:39.352:E / AndroidRuntime(28930):致:显示java.lang.NullPointerException
03-20 15:13:39.352:E / AndroidRuntime(28930):在com.mrbuoi.my_ap.MainActivity.onCreate(MainActivity.java:31)
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.app.Activity.performCreate(Activity.java:4465)
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-20 15:13:39.352:E / AndroidRuntime(28930):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
03-20 15:13:39.352:E / AndroidRuntime(28930):... 11个

-----文件的Andr​​oidManifest.xml

 <清单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    包=com.example.my_ap
    安卓版code =1
    机器人:=的versionName1.0>
    <用途特征
        机器人:glEsVersion =0x00020000
        机器人:要求=真/>
    <用途-SDK
        安卓的minSdkVersion =8
        机器人:targetSdkVersion =14/><使用许可权的android:NAME =android.permission.INTERNET对/>
<使用许可权的android:NAME =android.permission.ACCESS_NETWORK_STATE/>
<使用许可权的android:NAME =android.permission.WRITE_EXTERNAL_STORAG​​E/>
<使用许可权的android:NAME =com.google.android.providers.gsf.permission.READ_GSERVICES/>
<! - 不需要下面的两个权限使用
     谷歌地图Android版API V2,但建议。 - >
<使用许可权的android:NAME =android.permission.ACCESS_COARSE_LOCATION/>
<使用许可权的android:NAME =android.permission.ACCESS_FINE_LOCATION/><应用
    机器人:allowBackup =真
    机器人:图标=@绘制/ ic_launcher
    机器人:标签=@字符串/ APP_NAME
    机器人:主题=@风格/ AppTheme>
    &所述;元数据
    机器人:名字=com.google.android.gms.version
    机器人:价值=15/>
    &所述;元数据
    机器人:名字=com.google.android.maps.v2.API_KEY
    机器人:值=MY_APIKEY/>
    <活动
        机器人:名字=com.mrbuoi.may_ap.MainActivity
        机器人:标签=@字符串/ APP_NAME>
        &所述;意图滤光器>
            <作用机器人:名字=android.intent.action.MAIN/>            <类机器人:名字=android.intent.category.LAUNCHER/>
        &所述; /意图滤光器>
    < /活性GT;
< /用途>

----文件MainActivity.java

 包com.mrbuoi.my_ap;进口com.example.my_ap.R;
进口com.google.android.gms.maps *。
导入com.google.android.gms.maps.model *。
进口android.annotation.TargetApi;
进口android.app.Activity;
进口android.os.Bundle;进口android.os.Build;公共类MainActivity延伸活动{@TargetApi(Build.VERSION_ codeS.HONEYCOMB)
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);
     GoogleMap的地图=((MapFragment)getFragmentManager()
                .findFragmentById(R.id.map))的GetMap()。        经纬度悉尼=新的经纬度(-33.867,151.206);        map.setMyLocationEnabled(真);
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(悉尼,13));        map.addMarker(新的MarkerOptions()
                .title伪(悉尼)
                是.snippet(人口最多的城市在澳大利亚。)
                .POSITION(悉尼));
}
}

-----文件Fragment_main.xml

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:paddingBottom会=@扪/ activity_vertical_margin
机器人:paddingLeft =@扪/ activity_horizo​​ntal_margin
机器人:paddingRight =@扪/ activity_horizo​​ntal_margin
机器人:paddingTop =@扪/ activity_vertical_margin
工具:上下文=$ com.mrbuoi.my_ap.MainActivity PlaceholderFragment><片段
      机器人:ID =@ + ID /图
      机器人:layout_width =match_parent
      机器人:layout_height =match_parent
      机器人:名字=com.google.android.gms.maps.MapFragment/>< / RelativeLayout的>

更新activity_main.xml中

 <的FrameLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:ID =@ + ID /容器
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=com.mrbuoi.bactai_app.MainActivity
工具:忽略=MergeRootFrame/>

任何人都得到一个提示? TKS


更新:结果
@PiYusH古普塔,我试试这个,但这不能正常工作。结果
我的错误日志

  03-20 15:24:42.922:E / AndroidRuntime(29491):致命异常:主要
03-20 15:24:42.922:E / AndroidRuntime(29491):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.my_ap / com.mrbuoi.my_ap.MainActivity}:显示java.lang.NullPointerException
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.app.ActivityThread.access $ 600(ActivityThread.java:127)
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1158)
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.os.Handler.dispatchMessage(Handler.java:99)
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.os.Looper.loop(Looper.java:137)
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.app.ActivityThread.main(ActivityThread.java:4441)
03-20 15:24:42.922:E / AndroidRuntime(29491):在java.lang.reflect.Method.invokeNative(本机方法)
03-20 15:24:42.922:E / AndroidRuntime(29491):在java.lang.reflect.Method.invoke(Method.java:511)
03-20 15:24:42.922:E / AndroidRuntime(29491):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
03-20 15:24:42.922:E / AndroidRuntime(29491):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
03-20 15:24:42.922:E / AndroidRuntime(29491):在dalvik.system.NativeStart.main(本机方法)
03-20 15:24:42.922:E / AndroidRuntime(29491):致:显示java.lang.NullPointerException
03-20 15:24:42.922:E / AndroidRuntime(29491):在com.mrbuoi.my_ap.MainActivity.onCreate(MainActivity.java:22)
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.app.Activity.performCreate(Activity.java:4465)
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-20 15:24:42.922:E / AndroidRuntime(29491):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
03-20 15:24:42.922:E / AndroidRuntime(29491):... 11个


解决方案

所有你需要你的活动更改为 FragmentActivity 同时延长在你的类如下:

 公共类MainActivity扩展FragmentActivity {

和还包含布局充气其中的GoogleMap 视图是有名称 Fragment_main ,并在您的活动已膨胀布局 activity_main 这是错误的。

因此​​,改变你的的setContentView 布局

 的setContentView(R.layout.activity_main);

 的setContentView(R.layout.Fragment_main);

另外,作为您有低于11的最低API级别,所以你必须使用 SupportMapFragment 加载如下图:

  GoogleMap的地图=((SupportMapFragment)getSupportFragmentManager()
            .findFragmentById(R.id.map))的GetMap()。

编辑:

在您的清单中的变化如下行

 <元数据
    机器人:名字=com.google.android.gms.version
    机器人:价值=15/>

 <元数据机器人:名字=com.google.android.gms.version机器人:值=@整数/ GOOGLE_PLAY_SERVICES_VERSION/>

同样如下在 fragment_main 布局文件更改片段类的名称。

 <片段
      机器人:ID =@ + ID /图
      机器人:layout_width =match_parent
      机器人:layout_height =match_parent
      机器人:名字=com.google.android.gms.maps.SupportMapFragment/>

I have read document in https://developers.google.com/maps/documentation/android/start I create project android in eclipse, folow document step by step but when I can't run project.

sample error java.lang.NullPointerException

error log

03-20 15:13:39.332: D/AndroidRuntime(28930): Shutting down VM
03-20 15:13:39.332: W/dalvikvm(28930): threadid=1: thread exiting with uncaught exception (group=0x2b542210)
03-20 15:13:39.352: E/AndroidRuntime(28930): FATAL EXCEPTION: main
03-20 15:13:39.352: E/AndroidRuntime(28930): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.my_ap/com.mrbuoi.my_ap.MainActivity}: java.lang.NullPointerException
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.os.Looper.loop(Looper.java:137)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.app.ActivityThread.main(ActivityThread.java:4441)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at java.lang.reflect.Method.invokeNative(Native Method)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at java.lang.reflect.Method.invoke(Method.java:511)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at dalvik.system.NativeStart.main(Native Method)
03-20 15:13:39.352: E/AndroidRuntime(28930): Caused by: java.lang.NullPointerException
03-20 15:13:39.352: E/AndroidRuntime(28930):    at com.mrbuoi.my_ap.MainActivity.onCreate(MainActivity.java:31)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.app.Activity.performCreate(Activity.java:4465)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-20 15:13:39.352: E/AndroidRuntime(28930):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
03-20 15:13:39.352: E/AndroidRuntime(28930):    ... 11 more

----- File AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.my_ap"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="14" />

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <meta-data
    android:name="com.google.android.gms.version"
    android:value="15" />
    <meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="MY_APIKEY"/>
    <activity
        android:name="com.mrbuoi.may_ap.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

---- File MainActivity.java

package com.mrbuoi.my_ap;

import com.example.my_ap.R;
import com.google.android.gms.maps.*;
import com.google.android.gms.maps.model.*;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Bundle;

import android.os.Build;

public class MainActivity extends Activity {

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
     GoogleMap map = ((MapFragment) getFragmentManager()
                .findFragmentById(R.id.map)).getMap();

        LatLng sydney = new LatLng(-33.867, 151.206);

        map.setMyLocationEnabled(true);
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 13));

        map.addMarker(new MarkerOptions()
                .title("Sydney")
                .snippet("The most populous city in Australia.")
                .position(sydney));
}
}

----- File Fragment_main.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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mrbuoi.my_ap.MainActivity$PlaceholderFragment" >

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

</RelativeLayout>

Update activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mrbuoi.bactai_app.MainActivity"
tools:ignore="MergeRootFrame" />

Anyone got a tip? Tks


UPDATE:
@PiYusH GuPtA, I have try this but this not work.
my Error log

03-20 15:24:42.922: E/AndroidRuntime(29491): FATAL EXCEPTION: main
03-20 15:24:42.922: E/AndroidRuntime(29491): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.my_ap/com.mrbuoi.my_ap.MainActivity}: java.lang.NullPointerException
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.os.Looper.loop(Looper.java:137)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.app.ActivityThread.main(ActivityThread.java:4441)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at java.lang.reflect.Method.invokeNative(Native Method)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at java.lang.reflect.Method.invoke(Method.java:511)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at dalvik.system.NativeStart.main(Native Method)
03-20 15:24:42.922: E/AndroidRuntime(29491): Caused by: java.lang.NullPointerException
03-20 15:24:42.922: E/AndroidRuntime(29491):    at com.mrbuoi.my_ap.MainActivity.onCreate(MainActivity.java:22)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.app.Activity.performCreate(Activity.java:4465)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-20 15:24:42.922: E/AndroidRuntime(29491):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
03-20 15:24:42.922: E/AndroidRuntime(29491):    ... 11 more

解决方案

First of all you need to change your Activity to FragmentActivity while extending in your class as below:

public class MainActivity extends FragmentActivity{

And also your layout inflating which contains the GoogleMap view is having name Fragment_main and in your activity you have inflated the layout activity_main which is wrong.

So change your setContentView layout

setContentView(R.layout.activity_main);

to

setContentView(R.layout.Fragment_main);

Also as you are having the minimum api level below 11 so you have to use SupportMapFragment to load the map as below:

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

EDITED:

In your manifest change your below line

<meta-data
    android:name="com.google.android.gms.version"
    android:value="15" />

to

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

Also change your Fragment class name as below in your fragment_main layout file.

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

这篇关于无法创建与谷歌地图API的Andr​​oid项目V2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆