2011-04-13 2 views
2

tabhost에 다음 코드가 있습니다.Android 탭 호스트 새로 고침

tabHost.addTab(tabHost.newTabSpec("tab1") 
      .setIndicator("First Text") 
      .setContent(new Intent(this, class1.class))); 
tabHost.addTab(tabHost.newTabSpec("tab2") 
      .setIndicator("Second Text") 
      .setContent(new Intent(this, class2.class))); 

각 탭을 새로 고치는 방법은 무엇입니까? 데이터베이스에서 데이터를 표시하는 데 문제가 있기 때문에이 작업을 수행하려고합니다.

탱크

+0

자세한 문제 사양을 기입하십시오. 탭 새로 고침을 원할 때, 사용자가 탭을 클릭 할 때 특정 시간 간격으로 말합니까? –

+0

예. 각 탭을 클릭하면 활동을 새로 고침합니다. – unnamed

답변

8

: 여기

는 클릭 이벤트를 차단하고, 탭 아래의 내용을 변경할 수있는 전체 예제입니다 귀하의 탭 클래스에 귀하의 원하는 결과를 얻을

+0

".addFlags"에 오류가 있습니다. 왠지 말해줘? – unnamed

+0

나는 그것을 끝내었다! – unnamed

+0

다음은 답변을 수락합니다. –

0
public static void chngtab(String name) { 
    ((TextView)tabHost.getTabWidget().getChildAt(0) 
         .findViewById(android.R.id.title)).setText(name); 
} 
1

사용 예를 들어 http://developer.android.com/reference/android/widget/TabHost.OnTabChangeListener.html

:

mTabHost.setOnTabChangedListener(new OnTabChangeListener(){ 
    @Override 
public void onTabChanged(String tabId) { 
    if(TAB_1.equals(tabId)) { 
    //Do first activity task 
    } 
    if(TAB_2.equals(tabId)) { 
     //Do the other task...so on 
    } 
}}); 

편집 됨 : 특정 탭을 클릭 할 것을보고 싶다면

, 당신은 추가해야 Listener를 TabHost가 아닌 탭 자체에 연결하십시오.

탭 구현 전경의 계층이다

TabHost 
    TabWidget 
     (tab) 
     (tab) 
    FrameLayout 

탭을 호출하여 실행시에 첨가되어 tabHost.addTab (tabHost.newTabSpec (""));

다음과 같이 호출하여 개별 탭에 대한 핸들을 얻을 수 있습니다. getTabWidget(). getChildAt (4);

본질적으로, OnClickListener를 TabWidget의 하위에 추가합니다. 이제 개별 탭에서 클릭 수를 선택할 수 있습니다. 그러나 이는 탭을 클릭 할 때 내용을 변경하는 기본 동작보다 우선합니다. 따라서 콘텐츠를 변경하려면 OnClickListener가 대신 콘텐츠를 변경해야합니다. 이것이 당신이 그냥 .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)를 사용

tabHost.addTab(tabHost.newTabSpec("tab1") 
     .setIndicator("First Text") 
     .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 
     .setContent(new Intent(this, class1.class))); 
tabHost.addTab(tabHost.newTabSpec("tab2") 
     .setIndicator("Second Text") 
     .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 
     .setContent(new Intent(this, class2.class))); 

를 원하는 것입니다 내 생각

final String myTabTag = "My Tab"; 
final int myTabIndex = 3; 

getTabHost().addTab(getTabHost().newTabSpec(myTabTag)); 

getTabWidget().getChildAt(myTabIndex).setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    if (getTabHost().getCurrentTabTag().equals(myTabTag)) { 
     getTabHost().setCurrentTab(myTabIndex); 
    } 
} 
}); 
+0

TAB_1 및 TAB_2는 무엇입니까? 수업? 귀하의 의견에 따라 – unnamed

+0

이 (가) 편집되었습니다. 그것이 무엇을 나타내는 지보십시오. –

2

그냥 onResume 기능을 사용하십시오. 나를 위해 잘 작동합니다.

관련 문제