0

私はカスタムタブホストを持っていますが、tabspecではなくaddTab()メソッドを使用しています。 MapViewの特定の場所が表示されます。私が遭遇している問題は、タブビュー内のmapviewタブを設定する行の例外です。TabHostのMapActivity

タブアクティビティ(機密の理由で削除さパッケージ):

import android.app.TabActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.TabHost; 
import android.widget.TextView; 



public class CustomTabHost extends TabActivity { 
/** Called when the activity is first created. */ 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tabhost); 
    setTabs() ; 
} 
private void setTabs() 
{ 
    addTab("Services", R.drawable.servicesicon, services.class); 
    addTab("Our Work", R.drawable.ourworkicon, ourwork.class); 

    addTab("RSS", R.drawable.rssicon, RSSReader.class); 
    addTab("Locate IML", R.drawable.locateicon, Locate.class); 
    addTab("Contact IML", R.drawable.contacticon, ContactUs.class); 
} 

private void addTab(String labelId, int drawableId, Class<?> c) 
{ 
    TabHost tabHost = getTabHost(); 
    Intent intent = new Intent(this, c); 
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId); 

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tabs_bg, getTabWidget(), false); 
    TextView title = (TextView) tabIndicator.findViewById(R.id.title1); 
    title.setText(labelId); 
    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon1); 
    icon.setImageResource(drawableId); 

    spec.setIndicator(tabIndicator); 
    spec.setContent(intent); 
    tabHost.addTab(spec); 
} 

} 

MapActivity:

import java.util.List; 

import android.graphics.drawable.Drawable; 
import android.os.Bundle; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.OverlayItem; 

public class Locate extends MapActivity { 


    @Override 
    protected void onCreate(Bundle icicle) { 
      super.onCreate(icicle); 
      setContentView(R.layout.locateiml); 


MapView mapview = (MapView) findViewById(R.id.locatemap); 
mapview.setBuiltInZoomControls(true); 

    List<Overlay> mapOverlays = mapview.getOverlays(); 
    Drawable drawable =this.getResources().getDrawable(R.drawable.locateicon); 
    Locateoverlay itemoverlay = new Locateoverlay(drawable, this); 
    GeoPoint point = new GeoPoint(382571066,-85751392); 
    OverlayItem overlayitem = new OverlayItem(point, "Interactive", null); 

itemoverlay.addOverlay(overlayitem); 

mapOverlays.add(itemoverlay); 
} 
protected boolean isRouteDisplayed() 
{ 
return false; 
} 
} 

ありオーバーレイもあるが、それはこの質問には必要ありません。私の質問は、マップアクティビティを処理する親アクティビティを作成する必要があると私は確信していますが、これを行う方法はわかりません。

答えて

0

私は、TabHostのアクティビティがアクティビティとはみなされないことを知っています。私はビューとして管理されていると思う。
私のケースでは、メインアクティビティは継承されていましたが、アクティビティとTabHostはXMLコンフィグレーションによって実装されていました。次に、MapActivityをTabSpecとしてTabHostに追加しましたが、MapViewはグレーの背景のみを表示します。
したがって、私は主なアクティビティをMapActivityを継承しています。
主なアクティビティがTabActivityを継承する必要があるかどうかは、これが最善の解決策かどうかわかりませんが、明白な理由がない場合、TabActivityではなくMapActivityを継承する方が良いと思います。
多分私の答えは最高ではない、私は何らかの方法であなたを助けることができたらいいと思う。
幸運!

0

TabActivityは過去に私に多くの問題を引き起こしました。これは、それに関連する別の問題かもしれません。

今すぐTabActivityは推奨されていません。 doc:

新しいアプリケーションでは、このクラスの代わりにFragmentsを使用する必要があります。 〜 古いデバイスで引き続き実行するには、v4サポートライブラリ を使用できます。これは、 とDONUTの互換性があるバージョンのフラグメントAPIを提供します。

あなたが使用する必要がありますFragmentMapViewを使用するには:petedoyleのandroid-support-v4-googlemapsを。