refresh a fragment from its parent activity
You can find your fragment by the Tag, but of course you need to give this tag to it while adding the fragment.
First add your fragment with a tag:
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
SomeFragment fragment = new ManageLinksFragment();
fragmentTransaction.add(R.id.fragment_container1,fragment, "sometag");
fragmentTransaction.commit();
And then on the Activity's site:
SomeFragment mSomeFragment = (SomeFragment) getFragmentManager().findFragmentByTag("sometag");
// now mSomeFragment.callsomething();
Refresh ListView upon Tab change/swipe (Android)
Think I answered my own question:
I have this code
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mViewPager.setAdapter(mSectionsPagerAdapter);
}
Select Tab and run code in its fragment
Activity.xml
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:tabGravity="fill"
app:tabMode="fixed" />
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Activity.class
TabLayout tabLayout;
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab);
tabLayout = findViewById(R.id.tabLayout);
viewPager = findViewById(R.id.viewPager);
setUpviewPager();
tabLayout.setupWithViewPager(viewPager);
}
private void setUpviewPager() {
ViewPagerAdpater viewPagerAdapter = new ViewPagerAdpater(getSupportFragmentManager());
viewPager.setAdapter(viewPagerAdapter);
}
private class ViewPagerAdpater extends FragmentPagerAdapter {
ViewPagerAdpater(FragmentManager supportFragmentManager) {
super(supportFragmentManager);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new FirsFrag();
case 1:
return new FirsFrag();
case 2:
return new FirsFrag();
default:
return null;
}
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "First Tab";
case 1:
return "Second Tab";
case 2:
return "Third Tab";
default:
return "";
}
}
@Override
public int getCount() {
return 3;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
}
Thanks, just run this code, this adapter is FragmentPagerAdpater
Fragment view in ViewPager is not restored when resuming
After a while ran into the same problem again, so updating this question.
If you're using FragmentStatePagerAdapter
you should provide FragmentManager
via getChildFragmentManager()
instead of getFragmentManager()
. See Issue 55068: ViewPager doesn't refresh child fragments when back navigation via backstack
Related Topics
Detect or Prevent If User Uses Fake Location
How to Set Space Between Listview Items in Android
React Native | Failed to Install the App. Please Accept All Necessary Sdk Licenses Using Sdk Manager
Remove Apk from Library in Google Play Developer Console
Android: How to Open a Specific Folder Via Intent and Show Its Content in a File Browser
How to Place an Imageview on Top of Another Imageview in Android
How to Remove Android Auto-Suggest Underlining in Edittext
How to Disable Behind View Click Event Framelayout
Remove Green Border Around Android Application
How to Know the Mtu Size of Android Smartphone
Android Edittext Text Control - How to Disable Possibility to Insert Gif from Google Keyboard
How to Painlessly Change My App Title Text Color
How to Open a New Fragment from Another Fragment
Download Failed Because the Resources Could Not Be Found
How to Make User Login from Only One Device At a Time
How to Make Android Device Boot When Power Is Plugged In
Google Maps, No Option for Starting the Navigation, Only Preview Is There