
In the context of a ViewPager with disabled finger swiping, the question arose on how to trigger data fetching requests in individual fragments once they become visible after swiping with dedicated buttons.
Initial Approaches
Problem
However, calling the sendGetRequest() method from the fragment within the OnPageChangeListener() led to a NullPointerException.
Solution
To resolve the issue and maintain fragment references, the adapter needed to be refactored.
PagerAdapter with Fragment References
Introduce a PagerAdapter that holds references to each fragment:
<code class="java">class PagerAdapter extends FragmentPagerAdapter {
public Fragment[] fragments;
// Instantiate fragments and add to array
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment createdFragment = (Fragment) super.instantiateItem(container, position);
fragments[position] = createdFragment;
return createdFragment;
}
}</code>Accessing Fragment from Activity
Then, in the activity, instead of creating a new fragment, use the referenced one:
<code class="java">viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
Fragment frag = mAdapter.fragments[position];
if (frag != null && frag instanceof FragmentTwo) {
((FragmentTwo)frag).sendGetRequest();
}
}
});</code>ViewPager2 and Kotlin
For ViewPager2 and Kotlin, the solution is similar:
<code class="kotlin">viewPager.registerOnPageChangeCallback(
object: ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
val frag: Fragment = mAdapter.fragments[position]
if (frag != null && frag is FragmentTwo) {
(frag as FragmentTwo).sendGetRequest()
}
}
}
)</code>Note: If using different fragment classes, consider implementing an interface with the sendGetRequest() method and implementing it in each fragment for a cleaner solution.
The above is the detailed content of How to Call Methods in ViewPager Fragments from Activity?. For more information, please follow other related articles on the PHP Chinese website!
Five major components of a von Neumann computer
Introduction to output devices in computers
How to deal with laptop lag and slow response
How to use htmllabel label
Tutorial on making inscribed coins
How to open the registry
What to do if ajax transmits Chinese garbled characters
Absolute reference input method