ViewPager内に3つのページ(フラグメント)がありますが、そのうち2つのページのメニュー項目のみを表示したいです。
previous SO answer で指定されたコードは機能しないようです:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser == true) { }
else if (isVisibleToUser == false) { }
}
Eclipseは、@ Overrideは不要であり、superは設定できないと言っています。システムによって呼び出されることはありませんが、たとえどのページが現在表示されているかをどのように判断できますか?ここで助けてもらえますか?
ViewPager.onPageChangeListener
を使用します。
viewPager.addOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
public void onPageSelected(int position) {
// Check if this is the page you want.
}
});
ViewPager.setOnPageChangeListener
は廃止されました。代わりにViewPager.addOnPageChangeListener
を使用する必要があります。
たとえば
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
ViewPager.SimpleOnPageChangeListener
の代わりにViewPager.OnPageChangeListener
を使用して、使用するメソッドのみをオーバーライドすることもできます。
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
// optional
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
// optional
@Override
public void onPageSelected(int position) { }
// optional
@Override
public void onPageScrollStateChanged(int state) { }
});
このヘルプを願っています:)
編集:Android APIにより、setOnPageChangeListener (ViewPager.OnPageChangeListener listener)
は非推奨です。このURLを確認してください:- Android ViewPager API
コトリンの場合、
view_pager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) {
}
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
}
override fun onPageSelected(position: Int) {
}
})