簡體   English   中英

有人可以幫我解決這個Android位置錯誤嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM