Passing Data Between Two Fragments In A Viewpager (android) (nullpointerexception)
Solution 1:
EDITED:
When you call fragmentPagerAdapter.getItem(1)
you are getting a new instance of the fragment so you are referring to a different object. this is why the view is null and you get the NullPointerException. If you need an adapter for only 2 fragments, you can try with something like that:
publicclassYourPagerAdapterextendsandroid.support.v4.app.FragmentPagerAdapter {
private FragmentFavourites mFragFavourites;
private FragmentConverter mFragConverter;
publicYourPagerAdapter() {
// ... your code abovethis.mFragFavourites = newFragmentFavourites();
this.mFragConverter = newFragmentConverter();
}
@Overridepublic Fragment getItem(int position) {
switch (position) {
case0:
return mFragFavourites;
case1:
return mFragConverter;
default:
returnnull;
}
}
}
Solution 2:
As above carlo.marinangeli has suggested when you call fragmentPagerAdapter.getItem(1) you are getting a new instance of the fragment so you are referring to a different object
So to get same object from you adapter you need to store your object. you can try following method in your adapter -
public Fragment getFragmentAtPosition(int position) {
return registeredFragments.get(position);
}
where registeredFragments is -
privateSparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();
and fill this sparseArray in getItem method like below -
@Overridepublic Fragment getItem(int position) {
switch (position) {
case0:
fragment = FragmentPost.newInstance(position);
registeredFragments.put(position, fragment);
return fragment;
}
returnnull;
}
Solution 3:
By using fragmentPagerAdapter.getItem(pos)
method I was referring to a new object every time the respond()
method was called. I fixed it by using findFragmentByTag()
method instead:
@Overridepublicvoidrespond(String[] names, String[] codes, String[] symbols,
int[] images) {
FragmentManager manager = getSupportFragmentManager();
FragmentConverter frag = (FragmentConverter) manager.findFragmentByTag("android:switcher:" + pager.getId() + ":" + 1);
frag.changeData(names, codes, symbols, images);
}
Solution 4:
you can get that error because you are assuming that you have got the FragmentConverter and the views associated to it.
Without a logcat it becomes a little bit difficult to help you but basically what I would like to do in a situation like this is to pass everything through the activity without letting know the existence of the other fragment to the fragments.
- F1 modifies a state object into the activity
- F2 has to register as a listener to the activity (be aware that the fragment can be attached and detached in the view pager)
- The Activity as soon it receives an updated, looks for all the registered listeners and if there is someone it delivers the updated
Post a Comment for "Passing Data Between Two Fragments In A Viewpager (android) (nullpointerexception)"