2012-07-31 4 views
0

내 시나리오는 다음과 같습니다. 두 개의 탭을 LocalActivityManager으로 표시하는 탭 호스트를 구현하고 있습니다. 첫 번째 주소는 ListView이고 지리적 위치 (예 : 거리, 주소 이름 ...)에 대한 정보를 표시하고 두 번째 주소는 입니다. MapViewGoogle's Map API을 구현하면 첫 번째 활동. 두 클래스가 다른 클래스에서 확장되어 있기 때문에 동일한 뷰에서 두 액티비티를 모두 구현할 수는 없습니다. 첫 번째는 사용자 정의 메뉴를 생성하는 부모가 있고 두 번째 것은 MapView에서 생성되기 때문에 모든 것을 수행하는 옵션이 하나의 활동을 사용할 수 없습니다.안드로이드에서 TabHost와 listview 및 mapview를 동기화하는 방법

내 문제는 첫 번째 활동에서 지연로드 (사용자가 콘텐츠를로드 할 때 콘텐츠를로드) 기능을 사용하는 경우 TabHost 메서드를 사용하여 MapView 활동에서 해당 항목을 어떻게 동기화 할 수 있습니까? ?

BroadcastReceiver을 사용하거나 AIDL을 만드는 등의 복잡한 해결책이 있지만 가장 간단한 해결책을 찾고 있습니다. 나는 코드 자체가 아니라이 일을 할 계획을 찾고있다.

미리 감사드립니다.

답변

0

내가 예를 들어, 당신은 리스너 패턴을 구현하기 위해 필요한이 경우 thik

public interface MapDataLoadingListener{ 
    public void onMapDataLoaded(List<MapData> dataList); 
} 

public class YourListActivity extends Activity{ 

    ... 

    // somewhere you push yoy lazy load task 
    UpdateListTask task = new UpdateListTask(); 
    task.setMapDataListener(// your map activity) 
    task.execute(); 
    ... 
} 


public class YourMapActivity extends MapActivity implements MapDataLoadingListener { 

    ... 

    public void onMapDataLoaded(List<MapData> dataList){ 
     updateMap(dataList); 
    } 

    ... 

    private void updateMap(List<MapData> dataList){ 
     ... 
    } 

} 


public class UpdateListTask extends AsyncTask { 

    private MapDataLoadingListener mapDataListener; 

    public void setMapDataListener(MapDataLoadingListener mapDataListener){ 
     this.mapDataListener = mapDataListener; 
    } 

    ... 

    @Override 
    protected void onPostExecute(Object result) { 
     mapDataListener.onMapDataLoaded((List<MapData>) result) 
    } 

} 
+0

안녕 게오르기, 이미 부모 활동 (ActivityGroup에서 확장 활동) 및 이들의 조합을 사용하여이 문제를 해결했습니다 액티비티 : getParent() 및 Activity : getActivity (StringId)를 사용하여 흐름 유형이 [child1-> parent-> child2] 인 데이터를 전달할 수 있습니다. 아주 좋은 답변이기 때문에 답변을 수락하겠습니다. 답장을 보내 주셔서 감사합니다! – mthama

+0

안녕하십니까. 하지만 ActivityGroup이 이제는 더 이상 사용되지 않는 클래스라는 점에 유의하십시오. –

관련 문제