我只有 2 个选项卡,并使用Experience - Multiple Android Activity in a TabActivity作为参考。
我的类体系结构是这样的:
MainActivity 扩展 TabActivity
1. TabGroup1Activity扩展 TabGroupActivity (从上面的参考实现的 TabGroupActivity 类)
1.i。Tab1Activity扩展 MapActivity(它有多个标记)
2. TabGroup2Activity扩展 TabGroupActivity
2.i。Tab2Activity
在第二个选项卡(Tab2Activity)中,我显示了具有多个标记的谷歌地图。在点击标记时,我显示了带有更多信息选项的警报对话框。
Onclicking 更多信息选项我必须开始新的活动而不丢失底部的标签。
我不知道的错误在哪里?
MapItemizedOverlay.java
public class InformationItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private Context mContext;
Activity parentContext;
public InformationItemizedOverlay(Drawable defaultMarker, Context context,
Activity parent) {
super(boundCenterBottom(defaultMarker));
mContext = context;
parentContext = parent;
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
@Override
protected boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(parentContext);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.setPositiveButton("More Info..",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Intent test = new Intent(parentContext,
AboutActivity.class);
TabGroupActivity parentActivity = (TabGroupActivity) parentContext;
parentActivity
.startChildActivity("AboutActivity", test);
}
});
dialog.show();
return true;
}
}
当我尝试使用上述代码时,当我单击警报对话框中的更多信息按钮时会出现错误。
当我删除警报对话框并编写以下代码时,它工作正常,在同一选项卡中打开新活动:
@Override
protected boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
Intent test = new Intent(parentContext,
AboutActivity.class);
TabGroupActivity parentActivity = (TabGroupActivity) parentContext;
parentActivity
.startChildActivity("AboutActivity", test);
}
});
return true;
}
当我单击 alertdialog 上的更多信息按钮时,如何使它能够打开新活动?
帮助 !!
04-05 17:42:02.171: W/dalvikvm(2631): threadid=1: 线程退出未捕获异常 (group=0x4001d800) 04-05 17:42:02.171: E/AndroidRuntime(2631): 致命异常: main 04-05 17:42:02.171: E/AndroidRuntime(2631): java.lang.ClassCastException: com.bbs.MainActivity 04-05 17:42:02.171: E/AndroidRuntime(2631): at com.bbs1.InformationItemizedOverlay$1 .onClick(InformationItemizedOverlay.java:63) 04-05 17:42:02.171: E/AndroidRuntime(2631): 在 com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 04-05 17 :42:02.171: E/AndroidRuntime(2631): 在 android.os.Handler.dispatchMessage(Handler.java:99) 04-05 17:42:02.171: E/AndroidRuntime(2631): 在 android.os.Looper。循环(Looper.java:123)04-05 17:42:02.171:E/AndroidRuntime(2631):在 android.app.ActivityThread.main(ActivityThread.java:4627) 04-05 17:42:02.171: E/AndroidRuntime(2631): 在 java.lang.reflect.Method.invokeNative(Native Method) 04-05 17:42:02.171: E/AndroidRuntime(2631): 在 java .lang.reflect.Method.invoke(Method.java:521) 04-05 17:42:02.171: E/AndroidRuntime(2631): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 868) 04-05 17:42:02.171: E/AndroidRuntime(2631): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-05 17:42:02.171: E/AndroidRuntime( 2631):在 dalvik.system.NativeStart.main(本机方法)ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 04-05 17:42:02.171: E/AndroidRuntime(2631): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-05 17:42:02.171:E/AndroidRuntime(2631):在 dalvik.system.NativeStart.main(本机方法)ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 04-05 17:42:02.171: E/AndroidRuntime(2631): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-05 17:42:02.171:E/AndroidRuntime(2631):在 dalvik.system.NativeStart.main(本机方法)