1

我有三个选项卡(使用 Fragments/ViewPager/SupportLibrary/FragmentActivity)。

左侧选项卡在初始加载时使用 ProgressDialog。但我默认使用中心选项卡。然而,当我第一次进入此活动并登陆该中心选项卡时,选项卡 #1 中的 ProgressDialog 显示在选项卡 #2(中心)上。

有没有办法防止这种情况?

4

1 回答 1

0

我使用布尔值阻止了这种情况。我不认为这是一个非常干净的方式。只需在选择选项卡时将布尔值设置为 true 并仅在选择选项卡时执行异步任务。

所以在我的 MainActivity 我有一个 3 的数组

public static boolean[] selected = new boolean[3];(静态与我使用的外部类有关,在您的情况下可能不需要)

我用描述指出每个标签

public void onTabSelected(Tab tab, android.app.FragmentTransaction ft)
    {
        getSupportFragmentManager().popBackStack();
        if (tab.getContentDescription() == "tab1")
        {
            mViewPager.setAdapter(mAppSectionsPagerAdapter);   
            selected[0] = true;
            selected[1] = false;
            selected[2] = false;
            mAppSectionsPagerAdapter.notifyDataSetChanged();
        }
        if (tab.getContentDescription() == "tab2")
        {               
            mViewPager.setAdapter(mAppSectionsPagerAdapter);
            selected[0] = false;
            selected[1] = true;
            selected[2] = false;
            mAppSectionsPagerAdapter.notifyDataSetChanged();
        }
        if (tab.getContentDescription() == "tab3")
        {
            mViewPager.setAdapter(mAppSectionsPagerAdapter);
            selected[0] = false;
            selected[1] = false;
            selected[2] = true;
            mAppSectionsPagerAdapter.notifyDataSetChanged();
        }

在片段中:

    if (MainActivity.selected[0])
    {
               // asynctask fragment
    }
于 2014-02-25T10:18:45.600 回答