1

我有 3 个选项卡包含不同的内容。他们从 Internet 加载内容。我使用 3 个 AsyncTasks 来做到这一点。一开始,3 个选项卡显示 3 个 ProgressBar。我希望每次完成一项任务时,它都会更新 TabSpec 并隐藏 ProgressBar。 问题是我不知道如何更新标签规范。

这是我在开始时创建 TabHost 的片段。

    final List<View> containerList = new ArrayList<View>();
    for(int i = 0; i < 4; ++i) {
        final LinearLayout layout = new LinearLayout(this);
        final ProgressBar progressBar = new ProgressBar(this);
        progressBar.setVisibility(View.VISIBLE);
        layout.addView(progressBar);            
    }

    // Prepare labels and icons.        
    final List<String> tabLabels = Arrays.asList(getResources().getStringArray(R.array.destination_tab_labels));       
    // TODO Prepare icons here later.

    // Populate tabs' contents.
    final TabHost tabHost = getTabHost();
    for(final String label : tabLabels) {
        final TabSpec tab = tabHost.newTabSpec(label);
        tab.setContent(new TabContentFactory() {
            @Override
            public View createTabContent(final String tag) {
                // Return ListView here later.
                return containerList.get(i++);
            }
        });
        //TODO Add icon here later.
        tab.setIndicator(label);
        tabHost.addTab(tab);
    }
4

1 回答 1

1

创建 3 个活动,每个活动都有自己的内容、AsyncTask 和进度条。对于任务完成的任何活动,它将更新其内容并隐藏进度条。
将这 3 个活动添加到选项卡主机,例如 ::

TabHost host = getTabHost(); 
host.addTab(host.newTabSpec("one").setIndicator("TAB1").setContent(new Intent(this, MyActivity1.class)));
host.addTab(host.newTabSpec("two").setIndicator("TAB2").setContent(new Intent(this, MyActivity2.class)));
host.addTab(host.newTabSpec("two").setIndicator("TAB2").setContent(new Intent(this, MyActivity3.class)));
于 2012-06-04T05:26:43.737 回答