2011-07-20 7 views
0
@Override 
protected void onCreate(Bundle arg0) { 
    super.onCreate(arg0); 
    setContentView(R.layout.map); 
    MapView mapView = (MapView) findViewById(R.id.mapview); 
    mapView.setBuiltInZoomControls(true); 
    badplatsName = getIntent().getStringExtra("se.brickit.badplatsen.badplatsname"); 
    lat = getIntent().getIntExtra("se.brickit.badplatsen.lat",0); 
    lon = getIntent().getIntExtra("se.brickit.badplatsen.lon",0); 

    List<Overlay> mapOverlays = mapView.getOverlays(); 
    Drawable drawable = this.getResources().getDrawable(R.drawable.smiley_flask); 
    BrMapViewItemOverlay itemizedoverlay = new BrMapViewItemOverlay(drawable); 
    GeoPoint point = new GeoPoint(lat,lon); 
    OverlayItem overlayitem = new OverlayItem(point, badplatsName, ""); 
    itemizedoverlay.addOverlay(overlayitem); 
    mapOverlays.add(itemizedoverlay); 
    mapView.getController().animateTo(point); 
    mapView.getController().zoomToSpan(6, 6); 
    mapView.setSatellite(true); 
} 

オーバーレイアイテムをクリックすると、アプリケーションがクラッシュします。誰が理由を知っているのですか?マップビューでオーバーレイアイテムをクリックするとクラッシュする

logcatはアクティビティを起動しようとしているように見えますが、クリックしたときにその名前の付いたボックスを表示するだけです。ここ

07-20 14:36:56.303: ERROR/AndroidRuntime(15856): FATAL EXCEPTION: main 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856): java.lang.NullPointerException 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.android.internal.app.AlertController$AlertParams.<init>(AlertController.java:743) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.app.AlertDialog$Builder.<init>(AlertDialog.java:273) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at se.brickit.badplatsen.BrMapViewItemOverlay.onTap(BrMapViewItemOverlay.java:43) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.google.android.maps.ItemizedOverlay.onTap(ItemizedOverlay.java:453) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.google.android.maps.OverlayBundle.onTap(OverlayBundle.java:83) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.google.android.maps.MapView$1.onSingleTapUp(MapView.java:347) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.google.android.maps.GestureDetector.onTouchEvent(GestureDetector.java:533) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.google.android.maps.MapView.onTouchEvent(MapView.java:647) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.view.View.dispatchTouchEvent(View.java:3765) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:905) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:944) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:944) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:944) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1701) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1116) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.app.Activity.dispatchTouchEvent(Activity.java:2093) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1685) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1802) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.os.Looper.loop(Looper.java:144) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at android.app.ActivityThread.main(ActivityThread.java:4937) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at java.lang.reflect.Method.invoke(Method.java:521) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
07-20 14:36:56.303: ERROR/AndroidRuntime(15856):  at dalvik.system.NativeStart.main(Native Method) 
07-20 14:36:58.163: ERROR/ActivityManager(96): fail to set top app changed! 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896): FATAL EXCEPTION: main 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896): java.lang.RuntimeException: Unable to start activity ComponentInfo{se.brickit.badplatsen/se.brickit.badplatsen.Tabs}: android.content.res.Resources$NotFoundException: Resource ID #0x0 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.app.ActivityThread.access$2300(ActivityThread.java:135) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.os.Looper.loop(Looper.java:144) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.app.ActivityThread.main(ActivityThread.java:4937) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at java.lang.reflect.Method.invoke(Method.java:521) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at dalvik.system.NativeStart.main(Native Method) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x0 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.content.res.Resources.getValue(Resources.java:892) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.content.res.Resources.getDrawable(Resources.java:580) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at se.brickit.badplatsen.Tabs.onCreate(Tabs.java:192) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751) 
07-20 14:36:58.243: ERROR/AndroidRuntime(15896):  ... 11 more 
07-20 14:37:00.053: ERROR/ClockWidget(209): weatherClock onReceive~ mUseAnimation:false 
07-20 14:37:00.053: ERROR/ClockWidget(209): weatherClock onReceive~ mUseAnimation:false 

Psがオーバーレイクラスです:

public class BrMapViewItemOverlay extends ItemizedOverlay { 
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 
private Context mContext; 

public BrMapViewItemOverlay(Drawable defaultMarker) { 
    super(boundCenterBottom(defaultMarker)); 
} 

public BrMapViewItemOverlay(Drawable defaultMarker, Context context) { 
    super(defaultMarker); 
    mContext = context; 
} 

public void addOverlay(OverlayItem overlay) { 
    mOverlays.add(overlay); 
    populate(); 
} 

@Override 
protected OverlayItem createItem(int i) { 
    return mOverlays.get(i); 
} 

@Override 
public int size() { 
    return mOverlays.size(); 
} 

@Override 
protected boolean onTap(int index) { 
    OverlayItem item = mOverlays.get(index); 
    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); 
    dialog.setTitle(item.getTitle()); 
    dialog.setMessage(item.getSnippet()); 
    dialog.show(); 
    return true; 
} 

}

+0

onTapまたはMapView onTouchListenerメソッドではどうしますか? –

答えて

1

この行を置き換え

BrMapViewItemOverlay itemizedoverlay = new BrMapViewItemOverlay(drawable);

あなたはコンテキストを通過したので、AlertDialogが障害を起こしている膨らませていません。

0

logcat出力から、私はあなたのTabs.javaの行番号に問題があると言うことができますファイル、同じ行で、私は文字列、色、drawablesまたは任意のような任意のリソースを参照しようとしていると確信していますが、そのResoのIDを取得していないため、ResourceNotFoundExceptionを与えている実際にはうまくいく。

ちょうど試してみると、再度プロジェクトをビルドするようにproject -> cleanを実行してください。その私の推測は、私も何度もやっていました。

要するに、Tabs.javaファイルの行番号192をチェックするだけです。

BrMapViewItemOverlay itemizedoverlay = new BrMapViewItemOverlay(drawable, this); 

関連する問題