2011-05-04 74 views
0

我有一个方法可以在水龙头上创建弹出式对话框,称为onBalloonTap,我试图在另一个类pip中调用CallPopup()。我究竟做错了什么?我不应该通过方法调用intent吗?我的目标是在调用onBalloonTap时启动另一项活动。有一个更好的方法吗?Android从另一个类中的方法调用一个Intent

pip

public void CallPopup() 
{ Log.i("CallPopup", "Started CallPopup"); 
    startActivity(intent); 
    finish(); 
} 

CallPopUp()onBalloonTap被称为另一个类

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; 
} 

我得到这个日志:

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} 

回答

0

它看起来像“pip”类扩展了Activity,但您只是在不经历任何Activity生命周期的情况下创建pip对象。空指针异常可能是因为你的pip对象不知道它的父上下文是什么。您几乎可以肯定可以访问onBalloonTap中的Context对象(例如,View.getContext()),那么为什么不直接从那里调用Context.startActivity()

0

您需要声明intent你使用0 这可能是你得到NullPointerException的原因。

相关问题