Как остановить перекрывающиеся фрагменты при изменении ориентации?

У меня есть приложение, которое использует фрагменты для отображения данных. Основное действие, показанное ниже, управляет фрагментами с recyclerview внутри него, и когда я меняю ориентацию, у меня, похоже, одно recyclerview перекрывает другое. При каждом изменении ориентации создается новый фрагмент. Как мне это исправить? Любая помощь будет отличной

public class MainActivity extends AppCompatActivity
        implements NotesFragment.OnFragmentInteractionListener, EditFragment.SaveFragmentItem {

    EditFragment editFrag;
    NotesFragment notesFrag;

    FragmentManager fragmentManager;
    FragmentTransaction fragmentTransaction;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        notesFrag = new NotesFragment();
        editFrag = new EditFragment();

        fragmentManager = getSupportFragmentManager();
        fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.container1, notesFrag);
        fragmentTransaction.commit();

    }

   ....
}

person ChrisR    schedule 12.04.2016    source источник


Ответы (1)


Я понял, что происходит. Это была оскорбительная строка кода:

    fragmentTransaction.add(R.id.container1, notesFrag);

Мне нужно было использовать метод replace(), заменяя фрагмент после каждого изменения ориентации, вместо того, чтобы добавлять еще один экземпляр фрагмента в FragmentManager. Простой ответ, но разочаровывающий;)

person ChrisR    schedule 14.04.2016
comment
вы также можете использовать функцию добавления и добавить цвет фона в свой xml, поэтому предыдущий макет не будет отображаться - person Rashid; 19.04.2016