android - studio - viewpager in fragment
Determinar cuándo un ViewPager cambia de página (4)
Tengo tres páginas (Fragmentos) dentro de una ViewPager, sin embargo, solo quiero mostrar un elemento de menú para dos de esas páginas.
El código proporcionado en una respuesta SO anterior no parece funcionar:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser == true) { }
else if (isVisibleToUser == false) { }
}
Eclipse dice que @Override no es necesario y super no se puede establecer. El sistema nunca lo llama, e incluso si fuera así, ¿cómo iba a determinar qué página se estaba mostrando en este momento? ¿Podría tener algo de ayuda aquí?
Para Kotlin,
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) {
}
})
También puede usar ViewPager.SimpleOnPageChangeListener
lugar de ViewPager.OnPageChangeListener
y anular solo aquellos métodos que quiera usar.
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) { }
});
Espero que esto ayude :)
Editar: según las API de Android, setOnPageChangeListener (ViewPager.OnPageChangeListener listener)
está en desuso. Verifique esta URL: - Android Viewer API
Use 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
está en desuso ahora. Ahora necesita usar ViewPager.addOnPageChangeListener
en ViewPager.addOnPageChangeListener
lugar.
por ejemplo,
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) {
}
});