2012-04-12 17 views
1

次の問題があります。TabActivity内の外部からlistviewアダプタを取り込む方法

私は2つのタブでtabActivityにいます。すべてのタブは同じアクティビティを起動しますが、onTabChangeListenerがあります。 このtabchangeリスナーでは、私は各アクティビティごとに異なるリストビューアダプタを設定する必要があります。 したがって、私は2つの異なるリストを持ち、このonTabchangeListenerからTabActivityからアダプタを変更したいが、次のエラーが表示される: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);   
      } 
      } 
     } 
    }); 

} 

主な質問は、TabActivityからアクティビティ内にあるlistViewのアダプタを設定する方法です。 ありがとうございます。

+1

アダプターを設定しないでください。アダプターを初期化し、そのアダプターをアクティビティーの作成中に設定してください。 –

+0

アクティビティーの完全なコードを示してください。 –

+0

これを呼び出すことはできません: 'MyActivity myActivity = new MyActivity();'。アクティビティを取得する唯一の方法は、OSがアクティビティを作成する場合です。 – Femi

答えて

2

アダプタを子アクティビティに渡す場合は、何らかの種類のグローバル共有オブジェクトが必要です。 1つのオプションは、アダプターを親TabActivity内のApplicationオブジェクトに渡し、子アクティビティーでアダプターを取り出すことです。

関連する問題