- I have 2
Fragment
s:My1stFragment
andMy2ndFragment
. - Inside
My1stFragment
I have aListView
which is populated by database. Also when I click on edit button I call 2ndFragment
to edit data. - In 2nd
Fragment
I edit my salary amount and update my database by clicking on submit button and come back toMy1stFragment
. - The problem is when I come back to
My1stFragment
, myListView
is not updated, even though the database has been updated.
Derive your PagerAdapter
class as
public static class MyPagerAdapter extends FragmentStatePagerAdapter
instead of
public static class MyPagerAdapter extends FragmentPagerAdapter
Basically, FragmentPagerAdapter
keeps the created Fragment
s in memory, while FragmentStatePagerAdapter
destroys and creates them anew as they are shifted in and out of view.
Further Considerations:
1. Make sure you are not calling setRetainInstance(true)
in any of your Fragment
s, else they won't be refreshed / updated.
2. Add
viewPager.setOffscreenPageLimit(0);
to your code. This ensures that adjacent Fragment
s are recreated.
3. Instead of
Activity -> ViewPager -> Fragments
create the structure as
Activity -> Fragment -> ViewPager -> Nested Fragments
This will ensure that each Fragment
is refreshed on page swipe. See this post for the implementation.
EDIT:
As discussed in the comments below, point 2 is redundant. So only points 1 and 3 are actually useful in this case.
Add following in your firstFragment:
@Override
public void setUserVisibleHint(boolean isVisibleToUser){
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
Log.e("Visible hint","in visibleHint ()");
//add your method to set adapter to listview here by passing (getActivity().getApplicationContext()) parameter for context
}
}
Now when you want to come to first fragment from other fragment, use :
((ActivityOfFragment) getActivity())./*viewPager if any.*/setCurrentItem(0/*fragment position*/, true);
Derive your PagerAdapter
class as
public static class MyPagerAdapter extends FragmentStatePagerAdapter
instead of
public static class MyPagerAdapter extends FragmentPagerAdapter
Basically, FragmentPagerAdapter
keeps the created Fragment
s in memory, while FragmentStatePagerAdapter
destroys and creates them anew as they are shifted in and out of view.
Further Considerations:
1. Make sure you are not calling setRetainInstance(true)
in any of your Fragment
s, else they won't be refreshed / updated.
2. Add
viewPager.setOffscreenPageLimit(0);
to your code. This ensures that adjacent Fragment
s are recreated.
3. Instead of
Activity -> ViewPager -> Fragments
create the structure as
Activity -> Fragment -> ViewPager -> Nested Fragments
This will ensure that each Fragment
is refreshed on page swipe. See this post for the implementation.
EDIT:
As discussed in the comments below, point 2 is redundant. So only points 1 and 3 are actually useful in this case.
© 2022 - 2024 — McMap. All rights reserved.