[英]Can someone help me please with this android location error?
您好,我m new to programming and the android platform and I
使用Google Maps Api v2开发了一个应用程序,并使用Android Studio 1.02开发了位置服务。基本上,当有人启动该应用程序时,它会立即放大其s users current location and i
遇到一些奇怪的问题。怪异的是,它是在我多次将其放在我的设备上销售后才起作用的,但是两天后(当我不在城镇时),我再次运行它,该应用在启动时崩溃了,此错误消失了:
有没有办法解决这个问题 ?
另外,您如何将actionBar放入android studio 1.02中,因为我找不到解决方法。
Logcat:
02-07 14:15:12.350 21921-21921 / com.nanocat.viapp E / AndroidRuntime:致命异常:主进程:com.nanocat.viapp,PID:21921 java.lang.RuntimeException:无法启动活动ComponentInfo {com。 nanocat.viapp / com.nanocat.viapp.MapsActivity}:java.lang.NullPointerException,android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305),android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363),android .app.ActivityThread.access $ 900(ActivityThread.java:161)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1265)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os .Looper.loop(Looper.java:157)at android.app.ActivityThread.main(ActivityThread.java:5356)at java.lang.reflect.Method.invokeNative(本机方法)at java.lang.reflect.Method.invoke (Method.java:515)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1265)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)在dalvik。小号 ystem.NativeStart.main(本机方法)原因:com.nanocat.viapp.MapsActivity.setUpMapIfNeeded(MapsActivity.java:46)com.nanocat.viapp.MapsActivity.setUpMap(MapsActivity.java:56)处的java.lang.NullPointerException )在com.nanocat.viapp.MapsActivity.onCreate(MapsActivity.java:28)在android.app.Activity.performCreate(Activity.java:5426)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)在android .app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)在android.app.ActivityThread.access $ 900(ActivityThread.java:161)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1265)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:157)在android.app.ActivityThread.main( ActivityThread.java:5356),位于java.lang.reflect.Method.invokeNative(Na 在com.android.internal.os上的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1265)上的java.lang.reflect.Method.invoke(Method.java:515)上找到tive方法)。 ZygoteInit.main(ZygoteInit.java:1081)在dalvik.system.NativeStart.main(本机方法)
我的MapsActivity类:
package com.nanocat.viapp;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
public class MapsActivity extends FragmentActivity {
private GoogleMap mMap;
double latitude;
double longitude;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
if (mMap == null) {
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
if (mMap != null) {
setUpMap();
}
}
}
public void setUpMap() {
Criteria criteria = new Criteria();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String provider = locationManager.getBestProvider(criteria, true);
Location myLocation = locationManager.getLastKnownLocation(provider);
latitude = myLocation.getLatitude();
longitude = myLocation.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(latLng)
.tilt(60)
.zoom(17)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
}
我的Manifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nanocat.viapp" >
<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" />
<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="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
和我的布局:
<fragment
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:id="@+id/map"
tools:context=".MapsActivity"
android:name="com.google.android.gms.maps.SupportMapFragment" />
问题是由于
Location myLocation = locationManager.getLastKnownLocation(provider);
如果尚未获取位置,则getLastKnowLocation
返回null。 因此,您至少应检查空的Location对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.