【发布时间】:2020-06-09 16:42:12
【问题描述】:
我有一个包含BottomNavigationView 的Activity,这个bottomnav 帮助Activity 显示三个片段。这些片段加载良好,我使用 AsyncTask 来完成每一个繁重的操作,而在 UI 线程中,我会显示一个 ProgressBar,直到所有内容加载。
我的片段有一个奇怪的行为:我第一次加载片段时需要一些时间才能实际显示它,而不是使用进度条立即显示它。
这件事只发生在第一次,而且只发生在这个片段中。
片段代码只包含这个:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new LoadData(getView(), getContext()).execute();
}
private class LoadData extends AsyncTask<Void, Void, Void> {
private View v;
private Context context;
public LoadData(View v, Context context) {
items = new ArrayList<>();
this.v = v;
this.context = context;
}
@Override
protected Void doInBackground(Void... voids) {
setItems(context); //Heavy operation
adapter = new DashAdapter(items, context);
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
//shows progressbar
progress = v.findViewById(R.id.DFProgress);
progress.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
setPager();
//sets viewPager and hides progressbar
progress.setVisibility(View.GONE);
}
}
在下面的gif中,如果你看一下底部的bottomnavigationview,你可以看到显示fragment需要时间。但是在尝试第二次加载片段后,它按预期加载。
我怎样才能使片段以正确的方式加载?
【问题讨论】:
-
您是否在 Fragment 的
onCreate、onCreateView或其他生命周期方法中做其他事情? -
是的,我设置了其他 UI 元素
-
可以分享setPager()的代码吗?
标签: java android android-fragments