2012-02-14 53 views
0

我知道他們是一些帖子,它們有相同的問題。 我已經閱讀了所有內容,但這並沒有解決我的問題。這裏是我的AndroidManifest.xml打開谷歌地圖時強制關閉

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

<uses-sdk android:minSdkVersion="8" /> 

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <uses-library android:name="com.google.android.maps" /> 

    <activity 
     android:name=".GPS" 
     android:label="@string/app_name" > 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 

    <activity android:name=".About" 
       android:label="@string/about_title" /> 
    <activity android:name=".getGPS" 
       android:label="@string/get_gps" /> 
</application> 
</manifest> 

這裏的XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<EditText 
android:id="@+id/id1" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="My text edit this." 
/> 
<com.google.android.maps.MapView 
android:id="@+id/myGMap" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:enabled="true" 
android:clickable="true" 
android:apiKey="0VeISgtB_USJi-BUVme-Zmbo7st7ED2Pf3TAv**" 
/> 
</LinearLayout> 

而這裏的日誌:

02-14 20:53:06.077: E/AndroidRuntime(302): FATAL EXCEPTION: main 
02-14 20:53:06.077: E/AndroidRuntime(302): java.lang.RuntimeException: Unable to start activity ComponentInfo{my.first.project/my.first.project.getGPS}: android.view.InflateException: Binary XML file line #12: Error inflating class com.google.android.maps.MapView 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.os.Looper.loop(Looper.java:123) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.app.ActivityThread.main(ActivityThread.java:4627) 
02-14 20:53:06.077: E/AndroidRuntime(302): at java.lang.reflect.Method.invokeNative(Native Method) 
02-14 20:53:06.077: E/AndroidRuntime(302): at java.lang.reflect.Method.invoke(Method.java:521) 
02-14 20:53:06.077: E/AndroidRuntime(302): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
02-14 20:53:06.077: E/AndroidRuntime(302): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
02-14 20:53:06.077: E/AndroidRuntime(302): at dalvik.system.NativeStart.main(Native Method) 
02-14 20:53:06.077: E/AndroidRuntime(302): Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class com.google.android.maps.MapView 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.view.LayoutInflater.createView(LayoutInflater.java:513) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.view.LayoutInflater.inflate(LayoutInflater.java:407) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
02-14 20:53:06.077: E/AndroidRuntime(302): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.app.Activity.setContentView(Activity.java:1647) 
02-14 20:53:06.077: E/AndroidRuntime(302): at my.first.project.getGPS.onCreate(getGPS.java:45) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
02-14 20:53:06.077: E/AndroidRuntime(302): ... 11 more 
02-14 20:53:06.077: E/AndroidRuntime(302): Caused by: java.lang.reflect.InvocationTargetException 
02-14 20:53:06.077: E/AndroidRuntime(302): at com.google.android.maps.MapView.<init>(MapView.java:238) 
02-14 20:53:06.077: E/AndroidRuntime(302): at java.lang.reflect.Constructor.constructNative(Native Method) 
02-14 20:53:06.077: E/AndroidRuntime(302): at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
02-14 20:53:06.077: E/AndroidRuntime(302): at android.view.LayoutInflater.createView(LayoutInflater.java:500) 
02-14 20:53:06.077: E/AndroidRuntime(302): ... 21 more 
02-14 20:53:06.077: E/AndroidRuntime(302): Caused by: java.lang.NullPointerException 
02-14 20:53:06.077: E/AndroidRuntime(302): at com.google.android.maps.MapActivity.setupMapView(MapActivity.java:382) 
02-14 20:53:06.077: E/AndroidRuntime(302): at com.google.android.maps.MapView.<init>(MapView.java:280) 
02-14 20:53:06.077: E/AndroidRuntime(302): at com.google.android.maps.MapView.<init>(MapView.java:255) 
02-14 20:53:06.077: E/AndroidRuntime(302): ... 25 more 

我得到 「強制關閉」 警報。

有什麼建議嗎?


public class getGPS extends MapActivity implements LocationListener 
{  
EditText txted = null; 
Button btnSimple = null; 
MapView gMapView = null; 
MapController mc = null; 
Drawable defaultMarker = null; 
GeoPoint p = null; 
double latitude = 10, longitude = 10; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.getgps); 

    // Creating TextBox displying Lat, Long 
    txted = (EditText) findViewById(R.id.id1); 
    String currentLocation = "Lat: " + latitude + " Lng: " + longitude; 
    txted.setText(currentLocation); 

    // Creating and initializing Map 
    gMapView = (MapView) findViewById(R.id.myGMap); 
    p = new GeoPoint((int) (latitude * 1000000), (int) (longitude * 1000000)); 
    gMapView.setSatellite(true); 
    mc = gMapView.getController(); 
    mc.setCenter(p); 
    mc.setZoom(14); 

    // Add a location mark 
    MyLocationOverlay myLocationOverlay = new MyLocationOverlay(); 
    List<Overlay> list = gMapView.getOverlays(); 
    list.add(myLocationOverlay); 

    // Adding zoom controls t o Map 
    @SuppressWarnings("deprecation") 
    ZoomControls zoomControls = (ZoomControls) gMapView.getZoomControls(); 
    zoomControls.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 

    gMapView.addView(zoomControls); 
    gMapView.displayZoomControls(true); 

    // Getting locationManager and reflecting changes over map if distance travel by 
    // user is greater than 500m from current location. 
    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, this); 
} 

/* This method is called when use position will get changed */ 
public void onLocationChanged(Location location) { 
    if (location != null) { 
     double lat = location.getLatitude(); 
     double lng = location.getLongitude(); 
     String currentLocation = "Lat: " + lat + " Lng: " + lng; 
     txted.setText(currentLocation); 
     p = new GeoPoint((int) lat * 1000000, (int) lng * 1000000); 
     mc.animateTo(p); 
    } 
} 

public void onProviderDisabled(String provider) { 
    // required for interface, not used 
} 

public void onProviderEnabled(String provider) { 
    // required for interface, not used 
} 

public void onStatusChanged(String provider, int status, Bundle extras) { 
    // required for interface, not used 
} 

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

/* Class overload draw method which actually plot a marker,text etc. on Map */ 
protected class MyLocationOverlay extends com.google.android.maps.Overlay { 

    @Override 
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) 
    { 
     Paint paint = new Paint(); 

     super.draw(canvas, mapView, shadow); 
     // Converts lat/lng-Point to OUR coordinates on the screen. 
     Point myScreenCoords = new Point(); 
     mapView.getProjection().toPixels(p, myScreenCoords); 

     paint.setStrokeWidth(1); 
     paint.setARGB(255, 255, 255, 255); 
     paint.setStyle(Paint.Style.STROKE); 

     Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.marker); 

     canvas.drawBitmap(bmp, myScreenCoords.x, myScreenCoords.y, paint); 
     canvas.drawText("I am here...", myScreenCoords.x, myScreenCoords.y, paint); 
     return true; 
    } 
} 
} 

回答

0

你可以嘗試映射這樣的觀點

<view android:id="@+id/mapview" 
class="com.google.android.maps.MapView" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_weight="1" 
android:clickable="true" 
android:apiKey="key" 
/> 

我覺得其觀點問題。

+0

不,沒沒有幫助。謝謝,不過。 – azizbekian 2012-02-14 13:16:41

0

在你AndroidManifest.xml中我想你聲明不相配的名字。(class getGPS extends MapActivity但你申報android:name=".GPS"

<activity 
     android:name=".getGPS" 
     android:label="@string/app_name" > 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 

編輯

確保您的類名和您在android:name中聲明的名稱是相同的。

例如,如果您的班級是getGPS,則應像上述示例一樣在清單android:name=".getGPS"中聲明。

+0

它應該是什麼?我是Android的初學者。 – azizbekian 2012-02-14 19:56:44

+0

我編輯了我的答案。它有幫助嗎? – 2012-02-15 02:10:57

+0

看清楚,也許你沒有注意到3類的存在:firts one - GPS,second - About,然後 - getGPS。這三個類是用AndroidManidest.xml編寫的:) 我發現了這個錯誤。回答了我的問題。 謝謝,四月:) – azizbekian 2012-02-15 04:41:01