【问题标题】:open different activities from map overlays从地图叠加层打开不同的活动
【发布时间】:2011-11-02 12:57:15
【问题描述】:

我是一个很少有经验的安卓程序员。

我有一个列表活动,每个列表项都会打开一个新活动。应用程序中有一个地图,其中显示了位置的气球叠加层。有 4 个位置,当我单击任何气球覆盖时,我需要相应索引的活动。 例如:如果我点击 index = 1 的气球,我需要在活动中显示列表的第一项。

我目前正在使用下面的代码。

@Override
protected boolean onBalloonTap(int index, OverlayItem item) {

    Toast.makeText(c, "onBalloonTap for overlay index " + index,
            Toast.LENGTH_LONG).show();
    int index1 = index;
    Intent i = new Intent(c,FestivalEvents.class);
    i.putExtra("banner", "index1");
    c.startActivity(i);

    return true;
}

我在另一个活动中捕捉到意图,即下面的 FestivalEvents.class

Bundle eventExtra = getIntent().getExtras();
    if(eventExtra!=null){
        int position = eventExtra.getInt("banner");
        Log.i("banner", "" + position);
        switch(position){
        case 0: Toast.makeText(mContext, ""+ position, Toast.LENGTH_LONG).show();setUpDesc(position);break;
        case 1:Toast.makeText(mContext, ""+ position,Toast.LENGTH_LONG).show();setUpDesc(position);break;
        case 2:Toast.makeText(mContext, ""+ position, Toast.LENGTH_LONG).show();setUpDesc(position);break;
        case 3:Toast.makeText(mContext, ""+ position, Toast.LENGTH_LONG).show();setUpDesc(position);break;

        }

    }

应用程序因使用此代码的空指针异常而崩溃。我希望我的代码在接收意图方面是正确的。或者我在处理接收意图时可能是错误的。 我有很多时间解决这个问题。谁能告诉我哪里出错了?

编辑 我的日志猫:

11-02 18:45:38.858: ERROR/AndroidRuntime(21168): FATAL EXCEPTION: main 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sysponent.bedford/com.sysponent.bedford.FestivalEvents}: java.lang.NullPointerException 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at android.os.Handler.dispatchMessage(Handler.java:99) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at android.os.Looper.loop(Looper.java:130) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at android.app.ActivityThread.main(ActivityThread.java:3687) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at java.lang.reflect.Method.invokeNative(Native Method) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at java.lang.reflect.Method.invoke(Method.java:507) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168):at dalvik.system.NativeStart.main(Native Method) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): Caused by: java.lang.NullPointerException 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at com.sysponent.bedford.FestivalEvents.onCreate(FestivalEvents.java:239) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 11-02 18:45:38.858: ERROR/AndroidRuntime(21168):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)

谢谢

【问题讨论】:

  • 问题出在onCreate(),我可以再看一些代码吗?

标签: android coding-style


【解决方案1】:
i.putExtra("banner", "index1");

不应该这样吗

  i.putExtra("banner", index1);

【讨论】:

  • 我都试过了,你说的那个没有反应,但会再试一次并更新你
  • 关于Null Ptr Exception,贴一下logcat的输出。
  • 我能够通过意图将索引发送到我需要的活动,现在我得到了 outOfboundException。我将添加更多代码和 logcat 以供审查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
相关资源
最近更新 更多