0

사용자 지정 탭 호스트에 tabspec 대신 addTab() 메서드를 사용합니다. 내지도 중 하나는 특정 위치를 보여줍니다. 내가 겪고있는 문제는 내 tabhost에서 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의 활동이 활동으로 간주되지 않습니다. 뷰로 관리되는 것 같습니다.
필자의 경우 주요 활동이 상속되었으며 Activity와 TabHost는 xml 구성을 통해 구현되었습니다. 그런 다음 MapActivity를 TabSpec으로 TabHost에 추가했지만 MapView는 회색 배경 만 표시합니다.
그래서, 나는 주요 액티비티를 MapActivity를 상속 받았다.
주요 액티비티가 TabActivity를 상속해야하는지 여부가 가장 좋은 솔루션인지 여부는 알 수 없지만 명백한 이유가없는 경우 TabActivity 대신 MapActivity를 상속하는 것이 더 좋습니다.
아마도 내 대답이 최선이 아니므로, 내가 어떤 식 으로든 당신을 도울 수 있기를 바랍니다.
행운을 빈다!

0

TabActivity은 과거에 많은 문제를 일으켰습니다. 이것은 이와 관련된 또 다른 문제 일 수 있습니다.

바로 지금 TabActivity은 더 이상 사용되지 않습니다. 의사가 말하길 :

새 응용 프로그램은이 클래스 대신 단편을 사용해야합니다. 이전 장치에서 계속 실행하려면 DOWNUT과 호환되는 조각 API 버전을 제공하는 v4 지원 라이브러리 을 사용할 수 있습니다.

는 사용할 필요합니다 MapView Fragment 돌며 사용하려면 petedoyle의 android-support-v4-googlemaps을.