2012-04-12 52 views
1

我遇到以下問題。如何從外部填充listview適配器在TabActivity中的活動

我在一個tabActivity與2個選項卡。每個標籤都會啓動相同的活動,但有一個onTabChangeListener。 在這個tabchange監聽器中,我需要設置每個活動都不同的listview適配器。 所以我會有兩個不同的名單,我想改變TabActivity他們的適配器,從這個onTabchangeListener,但我得到了以下錯誤:在OnCreate()之前的系統不爲活動提供服務 爲標籤的代碼是:

host = getTabHost(); 

    host.addTab(host.newTabSpec(TAG_AVAILABLE).setIndicator("First Tab") 
      .setContent(new Intent(this, MyActivity.class))); 
    host.addTab(host.newTabSpec(TAG_DOWNLOAD).setIndicator("Second Tab ") 
      .setContent(new Intent(this, MyActivity.class))); 
    host.setOnTabChangedListener(new TabHost.OnTabChangeListener() { 
     @Override 
     public void onTabChanged(String s) { 
      MyActivity myActivity = new MyActivity(); 
      int i = getTabHost().getCurrentTab(); 
      if (i == FIRST_TAB) { 
       setAdapterForMyActivity(firstAdapter);  
      } 
      } 
      if (i == SECOND_TAB) { 
       setAdapterForMyActivity(secondAdapter);   
      } 
      } 
     } 
    }); 

} 

主要問題是如何設置ListView的適配器,該適配器位於TabActivity的Activity中。 非常感謝。

+1

不要設置適配器只是初始化適配器,並將該適配器設置在活動 – 2012-04-12 07:24:49

+0

的oncreate中顯示活動的完整代碼。 – 2012-04-12 07:27:54

+0

你永遠無法做這個調用:'MyActivity myActivity = new MyActivity();'。獲取活動的唯一方法是操作系統創建它時。 – Femi 2012-04-12 07:29:50

回答

2

如果您想將適配器傳遞給子活動,則需要某種全局共享對象。一種選擇是將適配器傳遞給父級TabActivity中的Application對象,然後在子活動中檢索該對象。