0

次のソース コードが実行されません... Google マップの処理方法を学んでいます。助けてください

これは私のソースコードです::

package com.example.maptest;

import android.os.Bundle;
import android.location.*;
import android.content.Context;
import android.view.Menu;
import com.google.android.maps.*;


public class MainActivity extends MapActivity 
{

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Context context = getApplicationContext();

    LocationManager locationManager =
            (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

    Location location = null;

    double lat = location.getLatitude() * 100000;
    double longi = location.getLongitude() * 100000;


    LocationProvider provider =
            locationManager.getProvider(LocationManager.NETWORK_PROVIDER);

}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}
}

これはXMLファイルです

   <com.google.android.maps.MapView
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:apiKey="0GH71P-8YZB_XmnfIDs_-NOCtdlku2nwKABE61Q"
             />

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="32dp"
    android:ems="10"
    android:inputType="textPersonName" >

    <requestFocus />
</EditText>

</RelativeLayout>

私の AndroidManifest は::

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

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"/>
<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" >
    <activity
        android:name="com.example.maptest.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>
    <uses-library android:name="com.google.android.maps" />
</application>

なぜ起動しないのか本当に混乱しています...助けてください

03-17 08:34:05.215: W/dalvikvm(2380): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
03-17 08:34:05.235: E/AndroidRuntime(2380): FATAL EXCEPTION: main 
03-17 08:34:05.235: E/AndroidRuntime(2380): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.maptest/com.example.maptest.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.maptest.MainActivity" on path: /data/app/com.example.maptest-2.apk 
03-17 08:34:05.235: E/AndroidRuntime(2380): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:210)
4

2 に答える 2

2
Location location = null;

double lat = location.getLatitude() * 100000;
double longi = location.getLongitude() * 100000;

null 参照でメソッドを呼び出しているため、アプリケーションがクラッシュするのも不思議ではありません。locationを呼び出すなど、何らかの方法で変数を初期化する必要がありますLocationManager.getLastKnownLocation()。お役に立てれば。

于 2013-03-17T08:43:12.130 に答える
0

場所を初期化していません。だから私はあなたがNPEを取得していると思います

Location location = getGPSLocation(this);
if(location != null) {
   double lat = location.getLatitude() * 100000;
   double longi = location.getLongitude() * 100000;
}

編集:

private Location getGPSLocation(Context context) {
    try {
        LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        Criteria cr = new Criteria();
        cr.setCostAllowed(true);
        cr.setAccuracy(Criteria.NO_REQUIREMENT);
        cr.setPowerRequirement(Criteria.NO_REQUIREMENT);
        String provider = lm.getBestProvider(cr, true);
        if(provider == null)
            provider = lm.getBestProvider(cr, false);
        return lm.getLastKnownLocation(provider);
    }
    catch(Exception e) {
        Log.e("App", "Exception while fetch GPS at: " + e.getMessage());
    }
    return null;
}

そして、このアクセス許可 AndroidManifest.xml を追加します

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
于 2013-03-17T08:24:22.763 に答える