How restart Fragment in my Activity - Android
11,621
Solution 1
You can reload your fragment with this:
FragmentTransaction tr = getFragmentManager().beginTransaction();
tr.replace(R.id.fragment_layout, instanceFragment);
tr.commit()
Being instanceFragment
the instance of the fragment you wanna to reload and fragment_layout
the FrameLayout
component in your activity layout XML file.
Solution 2
For Android SDK >= 21 you may use this approach:
In your Activity class add function restartFragment
fun restartFragment(fragmentId: Int) {
val currentFragment = this.supportFragmentManager.findFragmentById(fragmentId)!!
this.supportFragmentManager.beginTransaction()
.detach(currentFragment)
.commit()
this.supportFragmentManager.beginTransaction()
.attach(currentFragment)
.commit()
}
In your Fragment call
(requireActivity() as <YourActivityClassName>).restartFragment(id, R.id.<your_fragment_id>)
Personally I took R.id.<your_fragment_id> from my nav_graph as R.id.settings_fragment
and as MainActivity
Author by
Arman Download
Updated on June 04, 2022Comments
-
Arman Download almost 2 years
I have an activity that have 3 fragment inside. I need restart a first fragment in my activity with click on Button.
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFrag(new HomeFragment(), "Home"); adapter.addFrag(new CategoryFragment(), "Category"); adapter.addFrag(new FilterFragment(), "Filter"); viewPager.setAdapter(adapter);
I test the following way but doesn't work and show error: refresh fragment at reload
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.Fragment.setNextAnim(int)' on a null object reference