TabHost и AsyncTasks в Android 2.1 - PullRequest
       24

TabHost и AsyncTasks в Android 2.1

1 голос
/ 20 апреля 2011

Мое приложение запускается с активностью TabActivity, имеющей четыре вкладки, каждая из которых имеет ассоциированное действие ListView в качестве своего содержимого.В идеале я хотел бы запустить AsyncTask в onCreate, который инициализирует соединение Drupal XMLRPC, и после его завершения я создаю tabHost и добавляю вкладки в onPostExecute.Это прекрасно работает в Android 2.2 и выше, но приведет к немедленному закрытию силы в 2.2 и ниже.Из того, что я прочитал, кажется, что в Android 2.2 ниже, TabActivity требует, чтобы вкладки создавались до того, как что-либо еще будет сделано, включая AsyncTasks?Если у кого-нибудь есть какие-либо предложения о том, как реализовать TabActivity, запускающее AsyncTask, перед началом действия в setCurrentTab, я был бы очень признателен.Я использую onCreate, который инициализирует tabHost для справки:

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    tabHost = getTabHost(); //The activity TabHost
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_bar);
    TabHost.TabSpec spec; //Reusable TabSpec for each tab
    Intent intent; //Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, BlogList.class);
    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("Blog Posts").setIndicator("Blog Posts")
                  .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, DiariesList.class);
    spec = tabHost.newTabSpec("Diaries").setIndicator("Diaries")
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, BoardList.class);
    spec = tabHost.newTabSpec("MGoBoard").setIndicator("MGoBoard")
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, UserActivityList.class);
    spec = tabHost.newTabSpec("My Account").setIndicator("My Account")
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.getTabWidget().getChildAt(0).getLayoutParams().height = 50;
    tabHost.getTabWidget().getChildAt(1).getLayoutParams().height = 50;
    tabHost.getTabWidget().getChildAt(2).getLayoutParams().height = 50;
    tabHost.getTabWidget().getChildAt(3).getLayoutParams().height = 50;
    tabHost.setCurrentTab(0);
}   
...