1

私は単に 2 つのタブを持っていて、TabActivity 内の複数の Android アクティビティを参照としてエクスペリエンスを使用しました。
私のクラス アーキテクチャは次のようなものです
。MainActivity は TabActivity拡張 し
ます Tab1Activityは MapActivity (複数のマーカーを持つ) 2を拡張します。TabGroup2Activity は TabGroupActivity 2.iを拡張します。Tab2Activity


2 番目のタブ (Tab2Activity) では、複数のマーカーを持つ Google マップを表示します。マーカーをテーピングすると、下部にあるタブを失うことなく、同じタブの下で新しいアクティビティを開始したいと考えています。
ItemizedOverlayItem クラスは次のとおりです。

MapItemizedOverlay.java

public class MapItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private Context mContext;



public InformationItemizedOverlay(Drawable defaultMarker, Context context) {
    super(boundCenterBottom(defaultMarker));

    mContext = context;
}

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);

    //what code i have to write to start new activity without loosing tabs at bottom

}
}

同じタブで新しいアクティビティを開始するには、次のコードを記述する必要があることはわかっていますが、上記の例では getParent() を記述できません。

Intent in = new Intent(getParent(), TestActivity.class);
TabGroupActivity parentActivity = (TabGroupActivity) getParent();
parentActivity.startChildActivity("in", in);

この問題を解決するにはどうすればよいですか??

4

1 に答える 1

1

「InformationItemizedOverlay」を呼び出している場所から親を引数として渡すだけです。

コードのどこかから以下のように呼び出している可能性があります。

InformationItemizedOverlay informationItemizedOverlay = new InformationItemizedOverlay(drawable,context);

以下のように変更します

InformationItemizedOverlay informationItemizedOverlay = new InformationItemizedOverlay(drawable,context,getParent());

「InformationItemizedOverlay」のコンストラクターも適宜変更してください.....

于 2012-04-05T10:11:22.313 に答える