ViewPager2内でFragmentを利用するとき、Fragment自身が表示状態になったことを知りたい。
ViewPager2は、表示ページが変わったときにViewPager2.OnPageChangeCallbackのonPageSelected()メソッドが呼ばれる。
ViewPager2.OnPageChangeCallbackをregisterOnPageChangeCallback()メソッドで登録することで、新しいページが表示されたことを知ることができる。
public class MainActivity extends AppCompatActivity {
static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(this);
ViewPager2 viewPager = findViewById(R.id.viewPager);
viewPager.setAdapter(adapter);
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
// 新しいページが表示された
Log.d(TAG, "onPageScrollStateChanged position=" + position);
}
});
}
}
ViewPager2では、Fragmentが表示状態になるとFragmentのonResume()が呼ばれる。
onResume()メソッドをオーバーライドすることで、可視状態になったことが分かる。
public class LeftFragment extends Fragment {
static final String TAG = LeftFragment.class.getSimpleName();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_left, container, false);
}
@Override
public void onResume() {
super.onResume();
// 表示された
Log.d(TAG, "onResume");
}
}