ビューページャー (互換性ライブラリを使用) に 3 つのフラグメントがあり、アプリの読み込み時に最初のフラグメントが表示されます。2 番目と 3 番目のページは少し CPU を集中的に使用するため、ユーザーが最初にスワイプしたときにのみコンテンツをロードしたいと考えています。
このために、ViewPager.OnPageChangeListener を実装し、onPageSelected をオーバーライドして、フラグメントで onResume を呼び出しました。
public void onPageSelected(int position) {
getItem(viewPager.getCurrentItem()).onResume();
}
フラグメントの onResume は次のとおりです。
@Override
public void onResume() {
super.onResume();
if ((MainActivity) getActivity() != null && ((MainActivity) getActivity()).pager != null && ((MainActivity) getActivity()).pager.getCurrentItem() == 1) {
doCpuIntensiveLoading();
}
}
インスタンス化されて表示されていないときに読み込まれないようにしますが、ページャーの getCurrentItem() がフラグメントの ID を返すときに読み込まれるようにします。
しかし!ページにスクロールすると getActivity() は null を返しますが、フラグメントのメニューが読み込まれ、メニューからの呼び出しが機能しています。
詳細が必要な場合はお知らせください。