2011-07-21 17 views
4

2つのタブを持つアプリがあります。各タブはxmlファイル(かなり大きい、多分400項目のrssファイル)を読み込みます。アプリの初期化時にタブの内容を初期化する方法

デフォルトでは、タブはクリックされるまでxmlを取得しません。私は単に、アプリケーションが最初に開かれたときにすべてをロードする方法を望んでいました。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Resources res = getResources(); // Resource object to get Drawables 
    TabHost tabHost = getTabHost(); // The activity TabHost 
    TabHost.TabSpec spec; // Resusable TabSpec for each tab 
    Intent intent; // Reusable Intent for each tab 

    // Audio Feed 
    intent = new Intent().setClass(this, AudioFeed.class); 
    spec = tabHost.newTabSpec("audio").setIndicator("", 
         res.getDrawable(R.drawable.ic_tab_audio)) 
        .setContent(intent); 
    tabHost.addTab(spec); 


    // Video Feed 
    intent = new Intent().setClass(this, VideoFeed.class); 
    spec = tabHost.newTabSpec("video").setIndicator("", 
         res.getDrawable(R.drawable.ic_tab_video)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    tabHost.setCurrentTab(0); //todo: remember what tab user was last on 
} 

答えて

3

IはTabHost.setCurrentTab(X)またはTabHost.setCurrentTabByTagを使用する(X):

は、ここでの主な図です。

mTabHost.setCurrentTab(1); 
mTabHost.setCurrentTab(0); 

私はTabHost.OnTabChangeListenerを使用します。

private OnTabChangeListener mOnTabChangeListener = new OnTabChangeListener() { 
    @Override 
    public void onTabChanged(String tag) { 
     if (FBIntent.EXTRA_XX.equals(tag)) { 
      // Current tab is xx. 
      ... if xx not init -> ... 
     } else if (FBIntent.EXTRA_YY.equals(tag)) { 
      // Current tab is yy. 
      ... 
     } 
    } 
}; 
+0

ああ、 'setCurrentTab'メソッドで素敵なハック。私はそれを使って、今は金色にしています。ありがとうuser802421 – Darcy

1

この同じ方法では、他のタブは何をしますか。私はあなたがそれらをクリックすると、他の人が何をするかを意味します。したがって、すべてのタブで同じことができます。 OnTabChanged()メソッドにこの同じタブを含めることを忘れないでください。同じ操作をもう一度やり直してください。そうしないと、このタブを再度クリックしても何も表示されません。

関連する問題