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
我現在明白了......我是多麼愚蠢?無論如何,大聲笑,非常感謝你 –