我有一个包含ViewPager的主Fragment。这个ViewPager有两个页面(列表片段)。当我启动Activity时,显示主Fragment并显示第一个页面的片段。此页面片段使用AsyncTask
从数据库中显示数据。
在主Fragment中,我有:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
onPageSelected(0);
}
@Override
public void onPageSelected(int position) {
Fragment fragment = (Fragment) pagerAdapter.instantiateItem(viewPager, position);
if (fragment instanceof IPagedFragment) {
((IPagedFragment) fragment).onShown(getActivity());
}
}
界面如下:
public interface IPagedFragment {
void onShown(FragmentActivity activity);
}
我遇到的第一个问题是必须将activity作为参数传递,因为当调用onShown
时,activity仍然为空。此外,分页片段使用类似于LoginActivity示例中的进度条逻辑。我还遇到以下异常:IllegalStateException: Fragment PagedFragment1{4201f758} not attached to Activity at android.support.v4.app.Fragment.getResources(Fragment.java:620)。因此,一旦分页片段完全可用于UI,正确的阶段开始从数据库检索数据是什么?