使用活动组时,无法从alertdialog onclicklistener启动新活动
我只有2个选项卡,并使用Experience - Multiple Android Activities in a TabActivity作为参考。
我类体系结构是这样的:
MainActivity延伸TabActivity
1. TabGroup1Activity延伸TabGroupActivity(从上面参考实施TabGroupActivity级)
1.i. Tab1Activity延伸MapActivity(其具有多个标记物)
2. TabGroup2Activity延伸TabGroupActivity
2.i. Tab2Activity使用活动组时,无法从alertdialog onclicklistener启动新活动
在第二个选项卡(Tab2Activity)我显示有多个标记的谷歌地图。在贴上标记时,我用更多信息选项显示了alertdialog。
点击更多信息选项,我必须开始新的活动,而不会失去底部的标签。
哪里是我不知道的错误?
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;
}
}
当我用上面的代码尝试,错误,当我在alertdialog点击More Info按钮给人。
@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;
}
我怎样才能使它发挥作用开辟新的活动时,我点击More Info按钮:
当我删除alertdialog和写下面的代码,它工作正常,在同一个选项卡中打开新的活动alertdialog ??
帮助!!
04-05 17:42:02.171:W/dalvikvm(2631):线程ID = 1:螺纹与未捕获的异常退出(组= 0x4001d800) 04-05 17:42:02.171:E/AndroidRuntime( 2631):FATAL EXCEPTION: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):at com.android.internal.app.AlertController $ ButtonHandler.handleMessage( AlertController.java:158) 04-05 17:42:02.171:E/AndroidRuntime(2631):at android.os.Handler.dispatchMessage(Handler.java:99) 04-05 17:42:02.171:E/AndroidRuntime(2631):at android.os.Looper.loop(Looper.java:123) 04-05 17:42:02.171:E/AndroidRuntime(2631):at android.app.ActivityThread.main(ActivityThread.java:4627) 04-05 17:42:02.171:E/AndroidRuntime(2631):at java.lang.reflect.Method.invokeNative(Native Method) 04-05 17 :42:02.171:E/AndroidRuntime(2631):at 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):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java :626) 04-05 17:42:02.171:E/AndroidRuntime(2631):at dalvik.system.NativeStart。主(本机方法)
您必须运行AlertDialogue
on current UI Thread
。使用runOnUiThread()
启动UI Thread.Here是例如:
runOnUiThread(new Runnable() {
@Override
public void run() {
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();
}//run
});//runOnUIThred
onTap方法在哪里? – captaindroid 2012-04-05 12:22:11
我给你一个例子。你必须在onTap()方法内编写代码 – Nishant 2012-04-05 12:23:55
呃,那我就试试吧! – captaindroid 2012-04-05 12:26:17
您可以发送logcat的错误细节 – Nishant 2012-04-05 11:42:25
@Nishant刚刚更新与logcat的错误! – captaindroid 2012-04-05 11:56:24
代码中的第63行是什么? “TabGroupActivity”强制转换? – 207 2012-04-05 12:09:54