2012-01-26 11 views
4

チュートリアルの後にGoogleマップを使用するプログラムをテストしました。私はチュートリアルのようなものを作っていましたが、アプリがクラッシュして「残念ながらHelloGoogleMapsが停止しました」というメッセージが表示されることがありました。デバッグしようとしましたが、onCreateメソッドに入る前でもクラッシュしているようです。これは私のコードです:AndroidでGoogleマップを使用する

package ru.medinfo.HelloGoogleMaps; 

import android.os.Bundle; 

import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapView; 

public class HelloGoogleMapsActivity extends MapActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     //getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
     super.onCreate(savedInstanceState); 
     MapView mapView = (MapView) findViewById(R.id.mapview); 
     mapView.setBuiltInZoomControls(true); 
     setContentView(R.layout.main); 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     return false; 
    } 
} 

ログイン例外の後:

01-27 16:22:34.195: W/dalvikvm(1038): Unable to resolve superclass of Lru/medinfo/HelloGoogleMaps/HelloGoogleMapsActivity; (3) 
01-27 16:22:34.195: W/dalvikvm(1038): Link of class 'Lru/medinfo/HelloGoogleMaps/HelloGoogleMapsActivity;' failed 
01-27 16:22:34.385: D/AndroidRuntime(1038): Shutting down VM 
01-27 16:22:34.385: W/dalvikvm(1038): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
01-27 16:22:34.415: E/AndroidRuntime(1038): FATAL EXCEPTION: main 
01-27 16:22:34.415: E/AndroidRuntime(1038): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ru.medinfo.HelloGoogleMaps/ru.medinfo.HelloGoogleMaps.HelloGoogleMapsActivity}: java.lang.ClassNotFoundException: ru.medinfo.HelloGoogleMaps.HelloGoogleMapsActivity 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at android.os.Looper.loop(Looper.java:137) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at java.lang.reflect.Method.invoke(Method.java:511) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at dalvik.system.NativeStart.main(Native Method) 
01-27 16:22:34.415: E/AndroidRuntime(1038): Caused by: java.lang.ClassNotFoundException: ru.medinfo.HelloGoogleMaps.HelloGoogleMapsActivity 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 
01-27 16:22:34.415: E/AndroidRuntime(1038):  ... 11 more 
01-27 16:22:34.465: W/ActivityManager(87): Force finishing activity ru.medinfo.HelloGoogleMaps/.HelloGoogleMapsActivity 
01-27 16:22:34.488: W/WindowManager(87): Failure taking screenshot for (180x300) to layer 21010 
01-27 16:22:35.001: W/ActivityManager(87): Activity pause timeout for ActivityRecord{41472d50 ru.medinfo.HelloGoogleMaps/.HelloGoogleMapsActivity} 
01-27 16:22:35.295: W/NetworkManagementSocketTagger(87): setKernelCountSet(10044, 0) failed with errno -2 
01-27 16:22:45.295: W/ActivityManager(87): Activity destroy timeout for ActivityRecord{41472d50 ru.medinfo.HelloGoogleMaps/.HelloGoogleMapsActivity} 

マニフェスト:

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

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

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

    <uses-library android:name="com.google.android.maps" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity android:name=".HelloGoogleMapsActivity" 
        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> 

</manifest> 
+0

投稿後のログのエラースタックトレースはこちら。 – kosa

+0

あなたもマニフェストを貼り付けてください! –

+0

が完了しました。マニフェストも追加されました。他のすべてのチュートリアルは、Googleマップを除いてはうまくいった。それはActivityの代わりにMapActivityを使用しています。これは問題がどこにあるかと思います。これはHelloGoogleMapsActivityのスーパークラスです。そしてLogは、このスーパークラスは解決されていないと言います。私は何らかの理由でMapActivityが見つからないと思っています... – wzbozon

答えて

2

は、私は同様の問題を持っていたあなたのマニフェスト

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="ru.medinfo.HelloGoogleMaps" 
    android:versionCode="1" 
    android:versionName="1.0" > 

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

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

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 

     <uses-library android:name="com.google.android.maps" /> 

     <activity android:name=".HelloGoogleMapsActivity" 
        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> 

</manifest> 
+0

助けてくれた皆さん、ありがとう、私はこのバグで約4時間を無駄にしていました。これが問題の場所です。この場所のチュートリアルに従わなかった私のばかげた愚か者 "AndroidManifest.xmlファイルを開き、要素の子として以下を追加してください:"少なくとも私はそのようなバグを解決する方法を学んだ。問題はMapActivityが見つからなかったことですが、なぜこれが停止したのかを理解しました。 – wzbozon

+0

ようこそ。私はあなたがこの問題に直面した最初の人ではないと思う.. :) – SERPRO

0

私は順序が以下のようにすべきだと思います。

super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
     MapView mapView = (MapView) findViewById(R.id.mapview); 
     mapView.setBuiltInZoomControls(true); 
+0

それはうまくいきませんでした。私はログを投稿しました。 ru.medinfo.HelloGoogleMaps.HelloGoogleMapsActivityクラスが見つかりませんでしたか?理由は何でしょうか? – wzbozon

0

で、アプリケーションのタグ内に<uses-library android:name="com.google.android.maps" />を入れてください。しかし、前の記事で説明した通りに を移動した後。出来た。

元の例外として、次のコード例を試してみてください。

package com.example.hellogooglemaps; 

    import android.os.Bundle; 
    import android.graphics.drawable.*; 
    import com.google.android.maps.*; 
    import java.util.*; 

    public class HelloGoogleMapsActivity extends MapActivity { 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      MapView mapView = (MapView) findViewById(R.id.mapview); 
      mapView.setBuiltInZoomControls(true); 

      List<Overlay> mapOverlays = mapView.getOverlays(); 
      Drawable drawable = this.getResources().getDrawable(R.drawable.android); 
      HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, this); 

      GeoPoint point = new GeoPoint(19240000,-99120000); 
      OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!"); 

      itemizedoverlay.addOverlay(overlayitem); 
      mapOverlays.add(itemizedoverlay); 
     } 

     @Override 
     protected boolean isRouteDisplayed() { 
      return false; 
     } 
    } 
関連する問題