アプリで場所のリストを見つけ、その場所を地図上に表示するために緯度と経度を別のクラスに渡しましたが、リストされた場所をクリックすると「強制終了アプリケーション」が表示されます。
コードは次のとおりです:
onClickで場所をリストする
ListView lv = getListView();
// listening to single list item click
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String lat = ((TextView) view.findViewById(R.id.lat)).getText().toString();
String lng = ((TextView) view.findViewById(R.id.lng)).getText().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), ViewOnMap.class);
in.putExtra(KEY_LAT, lat);
in.putExtra(KEY_LONG, lng);
startActivity(in);
}
});
次に、マップ上の場所を表示する別のクラスを作成しました。
public class ViewOnMap extends MapActivity {
static final String KEY_LAT = "lat";
static final String KEY_LONG = "lng";
MapView mview;
MapController mcontrol;
LocationManager locmanager;
Location location;
GeoPoint geopoint;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);
Intent in = getIntent();
List<Overlay> mapOverlays = mview.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.marker);
MapOverlay itemizedoverlay = new MapOverlay(drawable, this);
String lat = in.getStringExtra(KEY_LAT);
String lng = in.getStringExtra(KEY_LONG);
int latitude = Integer.parseInt(lat);
int longitude = Integer.parseInt(lng);
mview =(MapView)findViewById(R.id.mapv);
mview.displayZoomControls(true);
mview.setBuiltInZoomControls(true);
mcontrol =mview.getController();
mcontrol.setZoom(9);
GeoPoint point = new GeoPoint(latitude,longitude);
OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
何が間違っているのか教えてください。LogCat のエラーは次のとおりです。
04-17 18:07:54.509: E/AndroidRuntime(13783): 致命的な例外: メイン 04-17 18:07:54.509: E/AndroidRuntime(13783): java.lang.RuntimeException: アクティビティ ComponentInfo{com を開始できません。 run.trial/com.run.trial.ViewOnMap}: java.lang.NullPointerException 04-17 18:07:54.509: E/AndroidRuntime(13783): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768) で 04 -17 18:07:54.509: E/AndroidRuntime(13783): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 04-17 18:07:54.509: E/AndroidRuntime(13783): android.app で.ActivityThread.access$1500(ActivityThread.java:123) 04-17 18:07:54.509: E/AndroidRuntime(13783): android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 04-17 18: 07:54.509: E/AndroidRuntime(13783): android.os.Handler.dispatchMessage(Handler.java:99) 04-17 18:07:54.509: E/AndroidRuntime(13783): android.os.Looper.loop(Looper.java:130) 04-17 18:07:54.509: E/AndroidRuntime(13783): at Android.app.ActivityThread.main(ActivityThread.java:3835)