Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何减少片段中的数据加载时间?_Android_Android Fragments_Progressdialog - Fatal编程技术网

Android 如何减少片段中的数据加载时间?

Android 如何减少片段中的数据加载时间?,android,android-fragments,progressdialog,Android,Android Fragments,Progressdialog,我在我的android应用程序中有一个活动,它有几个片段作为选项卡。每个选项卡都有独立的API调用。我正在使用“进度”对话框显示和关闭数据加载UI。此活动需要花费大量时间来关闭“进度”对话框。我希望只有在加载所有片段的所有细节后,它才会消失。是否可以使每个片段独立,以便减少加载时间 //活动 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedI

我在我的android应用程序中有一个活动,它有几个片段作为选项卡。每个选项卡都有独立的API调用。我正在使用“进度”对话框显示和关闭数据加载UI。此活动需要花费大量时间来关闭“进度”对话框。我希望只有在加载所有片段的所有细节后,它才会消失。是否可以使每个片段独立,以便减少加载时间

//活动

     @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        getDatePicker();

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_homescreen);
        setSupportActionBar(toolbar);

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawerLayout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();
        toggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.white));

        NavigationView navigationView = (NavigationView) findViewById(R.id.sideNavView);
        navigationView.setNavigationItemSelectedListener(this);
        navigationView.setItemIconTintList(null);

      }

public void getDatePicker() {
    final AlertDialog.Builder builder = new AlertDialog.Builder(HomeScreenActivity.this);

    LayoutInflater inflater = getLayoutInflater();

    View dialog = inflater.inflate(R.layout.date_picker_dialog, null);
    datePicker = dialog.findViewById(R.id.date_picker);
    final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-M-dd");

    builder.setView(dialog)
            // Add action buttons
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int id) {
                Some calculation about date...

                  titleArray.clear();

                  for (int i = 0; i <= elapsed; i++) {
...
                    titleArray.add(...);
                  }

                  HomeScreenPagerAdapter homeScreenPagerAdapter = new HomeScreenPagerAdapter(HomeScreenActivity.this, getSupportFragmentManager(), titleArray);
                  ViewPager viewPager = findViewById(R.id.view_pager);
                  viewPager.setAdapter(homeScreenPagerAdapter);
                  TabLayout tabs = findViewById(R.id.tabs);
                  tabs.setupWithViewPager(viewPager);
                  tabs.setTabMode(TabLayout.MODE_SCROLLABLE);

                } catch (ParseException e) {
                  e.printStackTrace();
                }
              }
            })
            });
    builder.create();
    builder.show();
  }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
getDatePicker();
工具栏=(工具栏)findViewById(R.id.Toolbar\u主屏幕);
设置支持操作栏(工具栏);
抽屉布局抽屉=(抽屉布局)findViewById(R.id.DrawerLayout);
ActionBarDrawerToggle切换=新建ActionBarDrawerToggle(
这,抽屉,工具栏,R.string.navigation\u drawer\u open,R.string.navigation\u drawer\u close);
抽屉。添加抽屉链接器(切换);
toggle.syncState();
toggle.getDrawarRowDrawable().setColor(getResources().getColor(R.color.white));
NavigationView NavigationView=(NavigationView)findViewById(R.id.sideNavView);
navigationView.setNavigationItemSelectedListener(此);
navigationView.SetItemIContentList(空);
}
public void getDatePicker(){
final AlertDialog.Builder=新建AlertDialog.Builder(HomeScreenActivity.this);
LayoutInflater充气机=getLayoutInflater();
查看对话框=充气机。充气(R.layout.date\u picker\u对话框,空);
datePicker=dialog.findViewById(R.id.date\u picker);
最终简化格式简化格式=新简化格式(“yyyy-M-dd”);
builder.setView(对话框)
//添加操作按钮
.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
关于日期的一些计算。。。
titleArray.clear();
对于(int i=0;i 0){
HomeScreenTextResoneFragment homeScreenFragment1=新的HomeScreenTextResoneFragment();
返回家园1;
}
HomeScreen片段HomeScreen片段=新的HomeScreen片段();
返回家园碎片;
}
@可空
@凌驾
公共字符序列getPageTitle(int位置){
返回titleArray.get(位置);
}
@凌驾
public int getCount(){
返回titleArray.size();
}
}

我有一个片段要加载到选项卡上

是的。也可以加载第一个片段,去掉对话框,然后乐观地在后台加载其他选项卡数据。在您的情况下如何操作我们不知道,因为您没有提供代码。我已经编辑了我的问题。请帮助
public class HomeScreenPagerAdapter extends FragmentPagerAdapter {

  @StringRes
  private static final int[] TAB_TITLES = new int[]{R.string.home_tab1, R.string.home_tab2, R.string.home_tab3};
  private final Context mContext;

  private static List<String> titleArray;

  public HomeScreenPagerAdapter(Context context, FragmentManager fm, List<String> titleArray) {
    super(fm);
    mContext = context;
    this.titleArray = titleArray;
  }

  @Override
  public Fragment getItem(int position) {
    if (position == 0) {
      HomeScreenFragment homeScreenFragment = new HomeScreenFragment();
      return homeScreenFragment;
    } else if (position > 0) {
      HomeScreenFixturesOneFragment homeScreenFragment1 = new HomeScreenFixturesOneFragment();
      return homeScreenFragment1;
    }
    HomeScreenFragment homeScreenFragment = new HomeScreenFragment();
    return homeScreenFragment;
  }

  @Nullable
  @Override
  public CharSequence getPageTitle(int position) {
    return titleArray.get(position);
  }

  @Override
  public int getCount() {
    return titleArray.size();
  }
}