1

我已经构建了一个应用程序,一旦应用程序第一次运行,它就会开始将图像和一些数据从应用程序复制到内部存储器。然后稍后在另一个活动的其他地方使用这些数据。

复制过程需要 30 多秒。所以我想在异步任务中做到这一点。但我无法让它工作。异步任务运行良好,但我需要创建选项卡规范并将意图分配给 onPostExecute 方法上的每个规范。但我看到的只是没有规格的标签栏,没有任何效果。

那么知道如何以这种方式构建它吗?

任何帮助将不胜感激。我的活动在这里,

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tabbar_main);

    myJSON = new DataBaseJSONFunctions(this);

    TabHost tabHost = getTabHost();

    TabWidget tabWidget = tabHost.getTabWidget();

    Resources res = getResources();
    //TabHost tabHost = getTabHost();

    TabHost.TabSpec spec;
    Intent intent;

    // Starting Initialization process.
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

    if(!prefs.getBoolean("firstRun", false)) {

        initializeAll();
        // Set "firstRun" true to make it runs once application is installed.
        prefs.edit().putBoolean("firstRun", true).commit();
    }

我想把这个块放在一个异步任务中,

    intent = new Intent().setClass(this,Activities.class);
    spec = tabHost.newTabSpec("activities").setIndicator("act",res.getDrawable(R.drawable.tab_activities_selector)).setContent(intent);
    tabHost.addTab(spec);

    // doing the same things.
    intent = new Intent().setClass(this, Promotions.class);
    spec = tabHost.newTabSpec("promotion").setIndicator("Promotion",res.getDrawable(R.drawable.tab_promotions_selector)).setContent(intent);
    tabHost.addTab(spec);


    // doing the same things for Albums Activity.
    intent = new Intent().setClass(this,Menu.class);
    spec = tabHost.newTabSpec("menu").setIndicator("Menü",res.getDrawable(R.drawable.tab_menu_selector)).setContent(intent);
    tabHost.addTab(spec);

    for(int i = 0; i < tabWidget.getChildCount(); i++){
        tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_bar);
    }

    tabHost.setCurrentTab(0);

顺便说一句,我正在将我的活动上下文传递给异步任务。

4

1 回答 1

0

试图从中填充TabHost有点AsyncTask不合常规。我建议在TabHost您的应用程序启动后立即填充选项卡,然后运行AsyncTask,它可能会显示也可能不会显示ProgressDialog以让用户知道正在发生的事情,AsyncTask完成后,您可以使用新的 UI 填充数据。

于 2012-05-03T19:16:22.277 回答