无法创建与谷歌地图API的Android项目V2 [英] Can't create project with Google Map android API 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个
-----文件的AndroidManifest.xml
<清单的xmlns:机器人=http://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_STORAGE/>
<使用许可权的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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:paddingBottom会=@扪/ activity_vertical_margin
机器人:paddingLeft =@扪/ activity_horizontal_margin
机器人:paddingRight =@扪/ activity_horizontal_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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人: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 $第一C $ C>同时延长在你的类如下:
公共类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的Android项目V2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!