2012-07-13 3 views
0

내 앱에 탭을 구현 중입니다. 이를 위해 수업 내 활동을 처리하는 수업을 만들었습니다. 문제는 A, B, C, D와 같은 활동을 하나씩 시작한 것입니다. 이제 D에서 활동 A로 돌아가고 싶습니다. B, C 및 D와 같은 다른 활동은 파괴되어야합니다. 이것을 구현하도록 도와주세요. 다음은 활동을 처리하기 위해 사용하는 코드입니다. ...tabhost에서 자식 활동을 홈 활동으로 전환하는 방법

public class TabGroupActivity extends ActivityGroup { 

protected Context mCTX; 
protected ArrayList<String> mIdList; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if(mIdList == null){ 
     mIdList = new ArrayList<String>(); 
    } 

    //set context 
    mCTX = this; 

} 

public void startChildActivity(String Id, Intent intent){ 
    Id+= System.currentTimeMillis(); 
    Window window = getLocalActivityManager().startActivity(Id,intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 

    if (window != null) { 
     mIdList.add(Id); 
     setContentView(window.getDecorView()); 
    } 
} 

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 

    int length = mIdList.size(); 
    if(length > 0){ 
     Activity current = getLocalActivityManager().getActivity(mIdList.get(length-1)); 
     current.finish(); 
    } 

} 

@Override 
public void finishFromChild(Activity child) { 

    LocalActivityManager manager = getLocalActivityManager(); 
    int index = mIdList.size()-1; 

    if (index < 1) { 
     finish(); 
     return; 
    } 

    manager.destroyActivity(mIdList.get(index), true); 
    mIdList.remove(index); 
    index--; 
    String lastId = mIdList.get(index); 
    Intent lastIntent = manager.getActivity(lastId).getIntent(); 
    Window newWindow = manager.startActivity(lastId, lastIntent); 
    setContentView(newWindow.getDecorView()); 
} 


} 

활동을 시작하면 다음 코드를 사용합니다.

Intent locIntent = new Intent(HomeActivity.this,SomeActivity.class); 
TabGroupActivity parent = (TabGroupActivity) getParent(); 
parent.startChildActivity("some id", locIntent); 

하나 더 의심 스럽습니다 ... 한 탭의 활동을 다른 탭의 활동으로 전환하는 방법. 미리 감사드립니다.

+0

아직 솔루션을 찾고 – Aju

+0

해결책을 얻었습니까 ?? –

답변

5

TabHost 내부에서 활동하지 마십시오. 메모리가 낭비됩니다. 차라리 조각을 사용하고 싶습니다. TabHost에 쉽게 추가 할 수 있습니다. 이것은 좋은 튜토리얼 :

http://thepseudocoder.wordpress.com/2011/10/13/android-tabs-viewpager-swipe-able-tabs-ftw/

+0

고마워 .... 난 유용하다고 생각해. 난 이걸로 시도해 볼거야. – Aju

+0

나는 당신이 당신의 안드로이드 애플 리케이션에 TabBar 네비게이션처럼 아이폰 OS를 만들기 위해 노력하고 있다고 생각한다. 아주 좋은 생각은 아닙니다. Android 방식으로 UI를 다시 생각해보십시오. 대부분의 안드로이드 앱에 대해 살펴보면, TabHost를 사용하는 경우 단일 레벨 (루트)에서만 작동하며, 더 깊게 지나갈 때 일반적으로 앱은 TabHost없이 새로운 활동을 시작합니다. –

+0

Ios Like Tabbar를 만들려고합니다. 클라이언트는 그것을 원합니다. ActivityManager를 사용하면 모든 것이 잘 작동합니다. 나는 어린이 활동으로부터 가정 활동에 가서이 두 활동 사이의 다른 모든 활동들을 죽이려한다. – Aju

1

.

해당 활동에 대한 매니페스트 파일의 launchMode를 여러 인스턴스로 설정하고 FLAG_ACTIVITY_CLEAR_TOP 만 사용해야합니다.

FLAG_ACTIVITY_CLEAR_TOP의 이론을 설명했습니다.

예를 들어, A, B, C, D 활동으로 구성된 작업을 고려하십시오. D가 활동 B의 구성 요소로 해석되는 인 텐트로 startActivity()를 호출하면 C와 D가 완료되고 B

나는 그것을 사용 했으므로 완벽하게 작동합니다. 그래서 당신에게 의미가 있는지 또는 구현에 문제가 있는지 알려주십시오. .

+0

나는 그것을 사용해 봤지만, 아무 쓸모가 없어 ... 보통 이런 식으로 나를 위해 일하고있다. 여기서는 Tab과 Activitygroup을 사용하여 모든 활동을 처리합니다. 여기서는 작동하지 않습니다 .. – Aju

+0

다음은 공식 Android 사이트에 작성된 활동 그룹 클래스에 문제가있을 것입니다. 여기에 귀하의 활동 그룹 코드를 붙여 넣을 수 있습니까? – Shachillies

+0

코드 제 질문에 ... – Aju

관련 문제