Привет! Я реализовал карту Google с точками проекции, поэтому, когда я щелкаю точку, она открывает всплывающую подсказку с некоторой информацией, относящейся к ней.Я использовал этот ресурс github , что делает его довольно простым (спасибо Полу Сасику за руководство).Что я хочу, так это когда я нажимаю на каждый шарик, он должен открыть новую активность, я пытался реализовать ее в методе onTap, но проблема в том, что я не могу запустить startActivity в классе, который расширен от класса framelayout.Итак, вот мой код:
public class CouponMapView extends MapActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
ItemizedOverlay itemizedoverlay = new ItemizedOverlay(drawable, mapView);
//all the mapoverlay code goes here...........
//this part works fine.
}
}
// ---- Класс ItemizedOverlay, в котором я вызываю startActivity -----
public class ItemizedOverlay extends BalloonItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> overlays = new ArrayList<OverlayItem>();
private Context context;
private int id;
public ItemizedOverlay(Drawable defaultMarker, MapView mapView) {
super(boundCenter(defaultMarker), mapView);
context = mapView.getContext();
}
public void addOverlay(OverlayItem overlay) {
overlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return overlays.get(i);
}
@Override
public int size() {
return overlays.size();
}
@Override
protected boolean onBalloonTap(int index) {
//---I cant call startActivity here as this class is not inhereted from Activity its //extended from a class that is extended from FrameLayout that you will find if you scroll down.
SubActivity sub = new SubActivity();
sub.startCustomActivity();
return true;
}
}
// - Чтобы начать новое действие и вызвать метод startActivity, мне нужно создать новый класс и расширить его из Activity ...
public class SubActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void startCustomActivity(){
Intent Details = new Intent(getBaseContext(), Tab.class);
Details.putExtra("Id", 1327);
startActivity(Details);
}
}
Вывод: не могу вставить изображение напрямую, ссылка на это mapView показать детали наложения при нажатии
Изображение выше похоже на то, что я получаю, когдая нажимаю на оверлей, это должно запустить новое намерение, где я хочу показать некоторые детали.
Но когда я нажимаю на него, я получаю эти ошибки.Я не уверен, правильно ли я это делаю.Я вызываю класс subActivity при нажатии на изображение.
02-21 19:21:44.769: ERROR/AndroidRuntime(462): FATAL EXCEPTION: main
02-21 19:21:44.769: ERROR/AndroidRuntime(462): java.lang.NullPointerException
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.content.ComponentName.<init>(ComponentName.java:75)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.content.Intent.<init>(Intent.java:2678)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at com.vouchacha.mvc.mapview.SubActivity.startCustomActivity(SubActivity.java:17)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at com.vouchacha.mvc.mapview.ItemizedOverlay.onBalloonTap(ItemizedOverlay.java:52)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at com.vouchacha.mvc.mapview.BalloonItemizedOverlay$1.onTouch(BalloonItemizedOverlay.java:177)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.View.dispatchTouchEvent(View.java:3762)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:897)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
02-21 19:21:44.769: ERROR/AndroidRuntime(462): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)