2010-04-17 7 views
0

두 개의 다른 탭을 사용하여 하나의 액티비티에 액세스하고 싶습니다. 예를 들어 사람과 같은 하나의 액티비티와 그 두 개의 탭이 tab1이고 tab2.when은 내가 탭 1을 클릭하고있는 것처럼 사람들 페이지를 표시하고 싶습니다. 내 그룹과 tab2를 클릭하면 같은 페이지에 모든 제목이 표시됩니다. 즉, 두 개의 탭에 대해 하나의 인 텐트에 액세스하려는 것과 동일한 방식으로 해당 활동의 정보가 Tab에 따라 표시됩니다. 나 한테 제안 해줘. 고맙습니다.안드로이드의 TabHost 문제

답변

0

탭의 콘텐츠로 활동을 넣지 마십시오. 보기를 탭의 내용으로 넣으십시오. Here is a sample project이 기술을 시연합니다.

+0

왜 말을 그와 같은 검은 색과 흰색면에서? 내 탭 내에서 활동을 사용하고 실제로 그것을 선호합니다. 개념적으로, 필자의 탭에 넣은 것은 "Activity"에 넣을 것이고, 그렇게 쉽게 만들 수있는 메커니즘이 있으므로 탭 수준뿐 아니라 탭 호스트 수준에서 Activity 수명주기 메서드에 액세스 할 수 있습니다 즉, 해당 활동의 탭이 선택되면 onResume). 권장하지 않는 경우 프레임 워크에 TabSpec.setContent (Intent) 메소드 서명이있는 이유는 무엇입니까? – Rich

+2

"왜 그런 흑인과 백인 용어로 말하겠습니까?" 첫째, 힙 메모리를 낭비합니다. 둘째, CPU 시간을 낭비합니다. 셋째, 스택 공간을 낭비합니다. 넷째, 개발자는 사용하려고 할 때 혼란스러워하는 경향이있어 지원 질문의 수가 늘어납니다. 다섯 번째로, 나는 그것이 어떤 것을 추가하는지 아직 보지 못했다. 당신이 그것으로부터 얻는 어떤 코드 조직이 다른 클래스 구조와 완벽하게 잘 맞을 수 있고,'Activity'가 아니라도. 프레임 워크에있는 이유는 최적이 아닌 API에 많은 것들이 있습니다. 그래도 내 답변의 거친 톤에 사과드립니다. – CommonsWare

1

다른 탭에 대해 동일한 활동을 재사용 할 것이라고 생각하지 않습니다. 동일한 데이터의 다른 뷰를 나타 내기 위해 별도의 액티비티를 사용할 수없는 이유가 있습니까? 내가 말한 이유는 어떤 탭이 선택되었는지를 구별하기 위해 코드 안에 활동을 작성해야한다는 것이고, 클래스에 내재 된 코드베이스라면 훨씬 더 깨끗하다고 ​​생각합니다.

내가 의도을 통해 내 탭의 내용으로 활동을 설정하기 위해 다음과 같은 내 TabActivity의 코드를 가지고는 :

mTabHost = getTabHost(); 

    // Tab1 
    Intent tab1Intent = new Intent(this, ActivityForTab1.class); 
    mTabHost.addTab(mTabHost.newTabSpec(TabTag1).setIndicator(TabLabel1).setContent(tab1Intent));  

    // Tab2 
    Intent tab2Intent = new Intent(this, ActivityForTab2.class); 
    mTabHost.addTab(mTabHost.newTabSpec(TabTag2).setIndicator(TabLabel2).setContent(tab2Intent));  

    mTabHost.setCurrentTab(0);