2012-02-14 150 views
0

我試圖在菜單中使用三個選項製作應用程序。MapActivity在運行程序時崩潰

其中之一是Google地圖視圖。
當我點擊菜單的地圖選項時,應用程序將崩潰。

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.res.TypedArray; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.BaseAdapter; 
import android.widget.Gallery; 
import android.widget.ImageView; 
import com.google.android.maps.MapActivity; 
import android.widget.AdapterView.OnItemClickListener; 

public class GalleryView extends Activity { 
    Integer[] pics = { 
     R.drawable.leiden1, 
     R.drawable.leiden2, 
     R.drawable.leiden3, 
     R.drawable.leiden4, 
     R.drawable.leiden5, 
     R.drawable.leiden6, 
     R.drawable.leiden7, 
     R.drawable.leiden8, 
     R.drawable.leiden9, 
     R.drawable.leiden10, 

    }; 

    ImageView imageView; 

    private static final int MENU1 = Menu.FIRST; 
    private static final int MENU2 = Menu.FIRST + 1; 
    private static final int MENU3 = Menu.FIRST + 2; 

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

     Gallery ga = (Gallery)findViewById(R.id.Gallery01); 
     ga.setAdapter(new ImageAdapter(this)); 

     imageView = (ImageView)findViewById(R.id.ImageView01); 
     ga.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
            long arg3) { 

       imageView.setImageResource(pics[arg2]); 

      } 

     }); 

    } 


    public class ImageAdapter extends BaseAdapter { 

     private Context ctx; 
     int imageBackground; 

     public ImageAdapter(Context c) { 
      ctx = c; 
      TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1); 
      imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1); 
      ta.recycle(); 
     } 

     @Override 
     public int getCount() { 

      return pics.length; 
     } 

     @Override 
     public Object getItem(int arg0) { 

      return arg0; 
     } 

     @Override 
     public long getItemId(int arg0) { 

      return arg0; 
     } 

     @Override 
     public View getView(int arg0, View arg1, ViewGroup arg2) { 
      ImageView iv = new ImageView(ctx); 
      iv.setImageResource(pics[arg0]); 
      iv.setScaleType(ImageView.ScaleType.FIT_XY); 
      iv.setLayoutParams(new Gallery.LayoutParams(150,120)); 
      iv.setBackgroundResource(imageBackground); 
      return iv; 
     } 

    } 

    public boolean onCreateOptionsMenu(Menu menu) { 
     menu.add(0, MENU1, 0, "Foto's"); 
     menu.add(0, MENU2, 0, "Teampagina"); 
     menu.add(0, MENU3, 0, "Route"); 
     return true; 
    } 

    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case MENU1: 
       Intent myIntent = new Intent(getBaseContext(), GalleryView.class); 
       startActivityForResult(myIntent, 0); 
       return true; 
      case MENU2: 
       Intent myIntent2 = new Intent(getBaseContext(), HelloSpinnerActivity.class); 
       startActivityForResult(myIntent2, 0); 
       return true; 
      case MENU3: 
       Intent myIntent3 = new Intent(getBaseContext(), HelloGoogleMapsActivity.class); 
       startActivityForResult(myIntent3, 0); 
       return true; 
     } 
     return false; 
    } 
} 

HelloGoogleMapsActivity.java

package me.hellospinner.app; 

import java.util.List; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.OverlayItem; 
import com.google.android.maps.MapActivity; 
import android.content.Intent; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 

public class HelloGoogleMapsActivity extends MapActivity { 

private static final int MENU1 = Menu.FIRST; 
private static final int MENU2 = Menu.FIRST + 1; 
private static final int MENU3 = Menu.FIRST + 2; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main3); 

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

    List<Overlay> mapOverlays = mapView.getOverlays(); 
    Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker); 
    HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, this); 
    GeoPoint point = new GeoPoint(52184090, 4481470); 
    OverlayItem overlayitem = new OverlayItem(point, "Leidsche En Oegstgeester Hockey Club ","Hofbrouckerlaan 51 2341 LL Oegstgeest"); 

      itemizedoverlay.addOverlay(overlayitem); 


    mapOverlays.add(itemizedoverlay); 
    } 
@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(0, MENU1, 0, "Foto's"); 
    menu.add(0, MENU2, 0, "Teampagina"); 
    menu.add(0, MENU3, 0, "Route"); 
    return true; 
} 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case MENU1: 
     Intent myIntent = new Intent(getBaseContext(), GalleryView.class); 
     startActivityForResult(myIntent, 0); 
    return true; 
    case MENU2: 
    Intent myIntent2 = new Intent(getBaseContext(), HelloSpinnerActivity.class); 
    startActivityForResult(myIntent2, 0); 
    return true; 
    case MENU3: 
     Intent myIntent3 = new Intent(getBaseContext(), HelloGoogleMapsActivity.class); 
    startActivityForResult(myIntent3, 0); 



     return true; 

} 
    return false; 
} 
} 

logcat的

02-14 19:25:20.866: E/AndroidRuntime(234): Uncaught handler: thread main exiting due to uncaught exception 
02-14 19:25:20.885: E/AndroidRuntime(234): android.content.ActivityNotFoundException: Unable to find explicit activity class {me.hellospinner.app/me.hellospinner.app.HelloGoogleMapsActivity}; have you declared this activity in your AndroidManifest.xml? 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.app.Activity.startActivityForResult(Activity.java:2749) 
02-14 19:25:20.885: E/AndroidRuntime(234): at me.hellospinner.app.HelloSpinnerActivity.onOptionsItemSelected(HelloSpinnerActivity.java:73) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.app.Activity.onMenuItemSelected(Activity.java:2170) 
02-14 19:25:20.885: E/AndroidRuntime(234): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730) 
02-14 19:25:20.885: E/AndroidRuntime(234): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:139) 
02-14 19:25:20.885: E/AndroidRuntime(234): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 
02-14 19:25:20.885: E/AndroidRuntime(234): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:525) 
02-14 19:25:20.885: E/AndroidRuntime(234): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.view.View.onTouchEvent(View.java:4179) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.widget.TextView.onTouchEvent(TextView.java:6540) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.view.View.dispatchTouchEvent(View.java:3709) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
02-14 19:25:20.885: E/AndroidRuntime(234): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.os.Looper.loop(Looper.java:123) 
02-14 19:25:20.885: E/AndroidRuntime(234): at android.app.ActivityThread.main(ActivityThread.java:4363) 
02-14 19:25:20.885: E/AndroidRuntime(234): at java.lang.reflect.Method.invokeNative(Native Method) 
02-14 19:25:20.885: E/AndroidRuntime(234): at java.lang.reflect.Method.invoke(Method.java:521) 
02-14 19:25:20.885: E/AndroidRuntime(234): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
02-14 19:25:20.885: E/AndroidRuntime(234): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
02-14 19:25:20.885: E/AndroidRuntime(234): at dalvik.system.NativeStart.main(Native Method) 
02-14 19:25:20.905: I/dalvikvm(234): threadid=7: reacting to signal 3 
02-14 19:25:20.905: E/dalvikvm(234): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
02-14 19:25:22.839: I/Process(234): Sending signal. PID: 234 SIG: 9 

我希望有人能幫助我

+0

請添加'HelloGoogleMapsActivity.java'的內容。問題可能來自它 – ccheneson 2012-02-14 13:14:55

+0

並請發佈與錯誤相關的logcat內容 – 2012-02-14 14:13:51

回答

0

答案是在錯誤日誌中我想,「你聲明這個活動在你的AndroidManifest.xml中?「