2011-09-26 4 views
5

내 문의 사항을 확인해 주셔서 감사합니다!다른 탭을 선택하면 Android - onTabChanged가 호출되지 않습니다

아래 그림과 같이 탭 환경을 구현했습니다. onTabChanged 메서드를 실행하지 않는다는 점을 제외하고는 예상대로 작동하는 것 같습니다. 이 유형의 상황에 대한 여러 게시물을 찾았지만 예상 한대로 작동하도록 코드를 가져올 수 없었습니다. 조언?

감사합니다, 칩

public class TestTabActivity extends TabActivity implements OnTabChangeListener { 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Resources res = getResources(); // Resource object to get Drawables 
    TabHost tabHost = getTabHost(); // The activity TabHost 
    TabHost.TabSpec spec; // Resusable TabSpec for each tab 
    Intent intent; // Reusable Intent for each tab 

    intent = new Intent().setClass(this, Page1Activity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    spec = tabHost.newTabSpec("page1").setIndicator("Page 1", 
         res.getDrawable(R.drawable.ic_tab_page1)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, Page2Activity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("page2").setIndicator("Page 2", 
         res.getDrawable(R.drawable.ic_tab_page2)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, Page2Activity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    spec = tabHost.newTabSpec("page3").setIndicator("Page 3", 
         res.getDrawable(R.drawable.ic_tab_page3)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    tabHost.setCurrentTab(0); 
} 

public void onTabChanged(String tabId) { 
    Log.d("Tab Changed", "Changed a Tab"); 
} 
} 

답변

13

난 당신이 tabHost.setOnTabChangeListener(this)와 탭 변경 클래스를 등록하는 것이 표시되지 않습니다.

나는 이것을 tabHost.setCurrentTab(0) 전에하기를 권합니다.

onCreate의 끝에 onTabChanged("page1")을 수동으로 호출 할 수있는 탭의 첫 번째 세트에서 호출되지 않더라도.

또는 문제를 이해하지 못했습니다.

+1

Knickedi! 나는 장님 이었지만 지금은 알았다. –

관련 문제