我有三个选项卡(使用 Fragments/ViewPager/SupportLibrary/FragmentActivity)。
左侧选项卡在初始加载时使用 ProgressDialog。但我默认使用中心选项卡。然而,当我第一次进入此活动并登陆该中心选项卡时,选项卡 #1 中的 ProgressDialog 显示在选项卡 #2(中心)上。
有没有办法防止这种情况?
我有三个选项卡(使用 Fragments/ViewPager/SupportLibrary/FragmentActivity)。
左侧选项卡在初始加载时使用 ProgressDialog。但我默认使用中心选项卡。然而,当我第一次进入此活动并登陆该中心选项卡时,选项卡 #1 中的 ProgressDialog 显示在选项卡 #2(中心)上。
有没有办法防止这种情况?
我使用布尔值阻止了这种情况。我不认为这是一个非常干净的方式。只需在选择选项卡时将布尔值设置为 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
}