android – Fragments displayed over each other-ThrowExceptions

Exception or error:

I’ve got an Activity with a DrawerLayout, using the guidelines from

When I click on an drawerItem, I replace the current view with the new fragment:

Fragment fragment;
Bundle args = new Bundle();    
fragment = new NewsListFragment();
args.putInt("category", position);

// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getSupportFragmentManager();
                   .replace(, fragment)
mDrawerList.setItemChecked(position, true);

Now, sometimes the old fragment is not replaced but the new fragment is placed on top of the old one:

Why is this, and how to solve this problem?

Relevant XML:

<!-- The main content view -->


This only happens sometimes, and I haven’t found a flow to reproduce this yet. The app doesn’t support rotating, so it won’t happen there.

How to solve:

We went live with this version and havent received any complaints about this, so I will assume this was the correct answer:

in your onCreateView method add:

if (container != null) {

Be sure to check if container is not null!



After about 1 week, I found the solution without adding background color or anything else. Just add this code and fix that bullshit. I hope it will help all of you.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment, container, false);


Add in the every layout


The layouts background in default are transparen, so just put a background color and the new elements fragment, not display over old fragment


let’s try with


after you call commit() method


I run in this same problem and I see that there’s already an accepted answer but these answer is not 100% right and didn’t fix my problem.
The proposed answer by @Niels removes the views but the fragment(s) is(are) still added.
This is what I am using:

 * Call this to remove all the other added fragments and keep only the current one.
 * @param activity the activity to which the fragment has been attached.
 * @param fragment the fragment we want to keep.
public static void removeOtherAddedFragments(@NonNull AppCompatActivity activity, @NonNull Fragment fragment) {
    FragmentManager fragmentManager = activity.getSupportFragmentManager();
    for (Fragment frag : fragmentManager.getFragments()) {
        if (frag != null && !frag.equals(fragment) && frag.isAdded()) {

I am calling this in my onResume to be sure that it will be called also when I navigate back to the fragment.

Leave a Reply

Your email address will not be published. Required fields are marked *