2012-01-27 5 views
0

두 개의 탭이있는 프로젝트가 있습니다. 탭은 메인 클래스에서 생성됩니다. 여기에서는 탭 간의 변경 사항을 처리하기 위해 tablistener도 추가했습니다.onCreate()가있는 TabActivity 수신기

TabHost tabHost = getTabHost();  
tabHost.setOnTabChangedListener(this); 
    TabHost.TabSpec spec; 
    Intent intent; 
    intent = new Intent().setClass(this, Tab1.class); 
    spec = tabHost.newTabSpec("tab1").setIndicator("", 
        res.getDrawable(R.drawable.ic_tab_tab1)) 
        .setContent(intent); 
      tabHost.addTab(spec); 

리스너 방법 :

public void onTabChanged(String tabName) { 
    if (tabName.equals("tab1")){ 
     tab1.load(); 
    } 
} 

그리고 너무 두 번째 탭 비슷한 여기에 하나 개의 탭의 순간이다. 내 질문은, onCreate() 메서드는 Tab1 및 Tab2 클래스에서 한 번만 실행되는 경우 탭을 변경 한 후 해당 클래스를 표시하도록 기본 클래스를 "강제 적용"할 수 있습니까?

public class Tab1 extends Activity{ 
     public void onCreate(Bundle icicle) { 
      super.onCreate(icicle); 
      setContentView(R.layout.tab1); 
      load(); 
     } 
     public void load(){ 
     //.... 
     } 
    } 
+0

두 탭에서 목록을 사용하고 클릭 할 때마다 다시 채우려는 경우 onTabChanged() 메소드에서이 기능을 사용해야합니다. 또한 TabHost.TabContentFactory 인터페이스의 createTabContent (String s)를 구현하여 앱로드시 탭에 따라 다른보기 (내 경우에는 listviews)를 반환합니다. –

+0

어디에서 널 포인터 예외가 발생합니까? 줄을 지정하십시오. – Hiral

+0

이제 괜찮습니다. 두 번째 탭은 잘 추가되지 않았습니다. onResume() 메서드가 내 문제의 해결책이었습니다. 고마워요. :) – MMMM

답변

4

onCreate() 방법은 한 번만 Activity 처음로드 될 때 호출 내가 탭 '클래스는이 같은 있습니다 NullPointerException이

을받을 수 있습니다.

Activity을 볼 때마다 어떤 기능을 수행하려면 onResume() 방법으로 해당 기능을 넣으십시오.

+0

고맙습니다. :) 매우 도움이되었습니다. – MMMM