0
我尝试启动Place.Class
,其中显示每个位置的更多详细信息。单击AlertDialog中的按钮后,用Intent启动新活动的错误
以下在这里我有AboutMap
延伸MapActivity
。我也创建AlertDialog与按钮See more detail
在这里。但它不工作。当我运行程序时,点击See more detail
按钮后崩溃。我并没有得到确切的结果,它应该..我想那一定是错的地方..可能是这里
Intent i = new Intent(mContext, Place.class);
//但我不知道如何解决它
待办事项你们有什么想法?谢谢你这么多的帮助
PlaceItemizedOverlay
public class PlaceItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private Context mContext;
private Cursor c;
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
public PlaceItemizedOverlay(Drawable defaultMarker, Context context)
{
super(boundCenterBottom(defaultMarker));
mContext = context;
}
public PlaceItemizedOverlay(Context context)
{
super(boundCenterBottom(null));
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) {
//Create AlertDialog
final OverlayItem oi = mOverlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(oi.getTitle());
dialog.setMessage(oi.getSnippet());
dialog.setNegativeButton("Back", null);
//Create See more detail Button
dialog.setPositiveButton("See More Detail", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//Line 87: Logcat tell that there are some problem around here
Intent i = new Intent(mContext, Place.class);
i.putExtra(Constants.KEY_ID, c.getInt(
c.getColumnIndex(Constants.KEY_ID)));
i.putExtra(Constants.COL_TITLE, c.getString(
c.getColumnIndex(Constants.COL_TITLE)));
i.putExtra(Constants.COL_ADDRESS, c.getString(
c.getColumnIndex(Constants.COL_ADDRESS)));
i.putExtra(Constants.COL_CONTENT, c.getString(
c.getColumnIndex(Constants.COL_CONTENT)));
mContext.startActivity(i);
}});
dialog.show();
return true;
}
}
public class AboutMap extends MapActivity {
MapView mapView;
MapController mapController;
private static MyDB mDbHelper;
private Cursor c;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.aboutcm);
mDbHelper = new MyDB(this);
mDbHelper.createDatabase();
mDbHelper.open();
c = mDbHelper.getAttraction();
mapView = (MapView) findViewById(R.id.mapview);
mapController = mapView.getController();
Drawable drawable = this.getResources().getDrawable(R.drawable.map_pin_3);
List<Overlay> mapOverlays = mapView.getOverlays();
PlaceItemizedOverlay itemizedoverlay = new PlaceItemizedOverlay(drawable, this);
mapController.setZoom(13);
mapView.setBuiltInZoomControls(true);
c.moveToFirst();
do {
String title = c.getString(c
.getColumnIndex(Constants.COL_TITLE));
String address = c.getString(c
.getColumnIndex(Constants.COL_ADDRESS));
int latitude = (int) (c.getDouble(c
.getColumnIndex(Constants.COL_LA)) * 1E6);
int longitude = (int) (c.getDouble(c
.getColumnIndex(Constants.COL_LONG)) * 1E6);
itemizedoverlay.addOverlay(new OverlayItem(new GeoPoint(latitude, longitude), title,
address));
mapOverlays.add(itemizedoverlay);
} while (c.moveToNext());
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
Logcat
09-04 14:31:29.019: DEBUG/AndroidRuntime(975): Shutting down VM
09-04 14:31:29.029: WARN/dalvikvm(975): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
09-04 14:31:29.029: ERROR/AndroidRuntime(975): Uncaught handler: thread main exiting due to uncaught exception
09-04 14:31:29.069: ERROR/AndroidRuntime(975): java.lang.NullPointerException
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at com.ctg.PlaceItemizedOverlay$1.onClick(PlaceItemizedOverlay.java:87)
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at android.os.Handler.dispatchMessage(Handler.java:99)
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at android.os.Looper.loop(Looper.java:123)
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at android.app.ActivityThread.main(ActivityThread.java:4363)
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at java.lang.reflect.Method.invokeNative(Native Method)
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at java.lang.reflect.Method.invoke(Method.java:521)
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
09-04 14:31:29.069: ERROR/AndroidRuntime(975): at dalvik.system.NativeStart.main(Native Method)
09-04 14:31:29.099: INFO/Process(53): Sending signal. PID: 975 SIG: 3
是的,你说得对。我知道了。非常感谢。我最后要问的是,当我点击“查看更多详细信息按钮”,但是,每个地方都会立即弹出。这很奇怪。我想要显示只有一个点击和相同的标题,相同的信息。 我认为这可能是因为mContext。但是,我不知道如何解决这个问题。你有什么主意吗?无论如何,非常感谢您的好意 –
我想这取决于您对Place活动的实施吗?你将不得不向任何人展示代码,以查看发生了什么问题。也许你可以创建一个新的问题(而不是在这个评论流中)并完全描述它,所以人们有更多的机会看到它并帮助你。 :) – antonyt
我现在明白了......我是多么愚蠢?无论如何,大声笑,非常感谢你 –