我只有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。主(本機方法)
您可以發送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