Reset/reload fragment container

2019-01-27 05:39发布

问题:

How can i reset or reload a fragment container, to make it empty. I have a master detail view and i want to reset the detail container to empty on a menu item click.This works in some cases and does not in some.

 NullFragment fragment = new NullFragment();
 FragmentManager fragmentManager = getFragmentManager();
 FragmentTransaction fragmentTransaction = fragmentManager
        .beginTransaction();
 fragmentTransaction.replace(R.id.item_detail_container,
 fragment);
 int count = fragmentManager.getBackStackEntryCount();
 fragmentManager.popBackStackImmediate(count, 0);
 fragmentTransaction.commit();

回答1:

Usually you simply remove the fragment from it.

For example do something like

getFragmentManager().beginTransaction().remove(getFragmentManager().findFragmentById(R.id.your_container)).commit();

this will remove the fragment from the your_container holding it.

This gets the fragment currently present in your_container

getFragmentManager().findFragmentById(R.id.your_container)

and this remove the fragment

getFragmentManager().beginTransaction().remove(fragment).commit();

EDIT

Also sometimes it is useful to ensure all transactions are performed and finished, this can be done by using

getFragmentManager().executePendingTransactions();