【问题标题】:Android: NullPointerException for new Intent for Google MapsAndroid:谷歌地图的新意图的 NullPointerException
【发布时间】:2011-02-08 23:29:35
【问题描述】:

我在 android 上遇到了这个问题。我创建了一个带有自定义叠加层的地图 API 应用程序,每次我尝试单击叠加层并启动意图(谷歌地图)时,事情都会崩溃:

可能相关的代码:

threadid=3: thread exiting with uncaught exception (group=0x4001b188)
Uncaught handler: thread main exiting due to uncaught exception
java.lang.NullPointerException
at android.app.Activity.startActivityForResult(Activity.java:2749)
at android.app.Activity.startActivity(Activity.java:2855)
at com.jcfrei.chparking.funtionality.startgmapsnav(funtionality.java:16)
 at com.jcfrei.chparking.ParkingOverlay.onTap(ParkingOverlay.java:91)
 at com.google.android.maps.ItemizedOverlay.onTap(ItemizedOverlay.java:453)
 at com.google.android.maps.OverlayBundle.onTap(OverlayBundle.java:83)
 at com.google.android.maps.MapView$1.onSingleTapUp(MapView.java:346)
 at android.view.GestureDetector.onTouchEvent(GestureDetector.java:506)
 at com.google.android.maps.MapView.onTouchEvent(MapView.java:628)
 at android.view.View.dispatchTouchEvent(View.java:3709)
 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:852)
 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
 at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
 at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
 at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
 at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
 at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:123)
 at android.app.ActivityThread.main(ActivityThread.java:4363)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:521)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
 at dalvik.system.NativeStart.main(Native Method)

 public class funtionality extends Activity {


   public void startgmapsnav (String lat, String lon) {

    Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("geo:38.899533,-77.036476"));
         startActivity(myIntent);

}

 }

覆盖层内

    @Override
protected boolean onTap(int index)  {
  //OverlayItem item = mOverlays.get(index);


  funtionality lm = new funtionality();

  lm.startgmapsnav(lat, lon);

  return true;
} 

【问题讨论】:

    标签: android google-maps android-intent nullpointerexception


    【解决方案1】:

    你得到了什么教程

     funtionality lm = new funtionality();
    
      lm.startgmapsnav(lat, lon);
    

    来自?

    您永远不会,永远,永远,在扩展 Activity 的类上调用 new。曾经。期间。

    【讨论】:

    • 这是我的代码。但是那个类并没有扩展 Activity - 只是功能性。 - 但是,它应该扩展Activity吗?当然不用调用 new。
    • 是的,这正是问题所在......如果活动设置不正确,Android 运行时需要并没有设置数据结构。
    • @johnny,对。您永远不会直接实例化 Activity 子类,这正是您正在做的事情。您需要重组代码。首先,我只需将代码从startgmapsnav 中提取出来,然后将其放在您调用new 的位置,然后先这样尝试。没有必要在那里进行额外的活动。如果您想稍后将其抽象出来,则可以,但要删除尽可能多的变量以使其正常工作。
    • 感谢您的所有建议!我刚刚将带有 ontap 事件的整个 Overlay 类迁移到主 Activity 中,现在它工作得很好!
    【解决方案2】:

    我最好的猜测是 Uri.parse("geo:38.899533,-77.036476") 失败,并返回 null。您是否确认这会创建预期的 Uri?

    【讨论】:

    • 不,我从教程中复制了这个 - 我会尝试不同的字符串
    • 所以?你测试了吗?并确保它给了你正确的东西?
    • 好的,刚刚用"http://download.oracle.com/javase/1.4.2/docs/api/java/net/URI.html"试了一下,还是报了同样的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多