I have a method that creates popups on tap, called onBalloonTap and i am trying to call CallPopup() in another class pip. What am I doing wrong? Should I not be calling intent via method? My goal is to launch another activity when onBalloonTap is called. Is there a better way to do this?
CallPopUp() in pip
public void CallPopup()
{ Log.i("CallPopup", "Started CallPopup");
startActivity(intent);
finish();
}
being called from onBalloonTap in another class
protected boolean onBalloonTap(int index, OverlayItem item) {
Toast.makeText(c, "onBalloonTap for overlay index " + index,
Toast.LENGTH_LONG).show();
pip pipinst =new pip();
pipinst.CallPopup();
return true;
}
I get this log:
05-04 22:33:41.022: ERROR/AndroidRuntime(704): FATAL EXCEPTION: main
05-04 22:33:41.022: ERROR/AndroidRuntime(704): java.lang.NullPointerException
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.app.Activity.startActivityForResult(Activity.java:2817)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.app.Activity.startActivity(Activity.java:2923)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at com.appname.pip.pip.CallPopup(pip.java:192)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at com.appname.pip.MyItemizedOverlay.onBalloonTap(MyItemizedOverlay.java:67)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at com.readystatesoftware.mapviewballoons.BalloonItemizedOverlay$1.onTouch(BalloonItemizedOverlay.java:203)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.view.View.dispatchTouchEvent(View.java:3762)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:897)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.os.Handler.dispatchMessage(Handler.java:99)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.os.Looper.loop(Looper.java:123)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at java.lang.reflect.Method.invokeNative(Native Method)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at java.lang.reflect.Method.invoke(Method.java:521)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-04 22:33:41.022: ERROR/AndroidRuntime(704): at dalvik.system.NativeStart.main(Native Method)
05-04 22:33:41.102: WARN/ActivityManager(38): Force finishing activity com.appname.pip/.pip
05-04 22:33:41.952: WARN/ActivityManager(38): Activity pause timeout for HistoryRecord{43f680f0 com.appname.pip/.pip}
It looks like the “pip” class extends Activity, but you are just creating a pip object without going through any of the Activity lifecycle. The null pointer exception is probably because your pip object has no idea what its parent Context is. You almost certainly have access to a Context object in onBalloonTap (e.g., View.getContext()), so why not just call Context.startActivity() from there?