2012-04-12 54 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对象,然后在子活动中检索该对象。