На данный вопрос уже ответили:
Наложение фрагмента на фрагмент. За добавленным фрагментом виден предыдущий
2 ответа
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layoutForFragment = (FrameLayout) findViewById(R.id.layout_for_fragment);
fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.layout_for_fragment,cardStation);
fragmentTransaction.commit();
}
В методе OnCreate я вставляю фрагмент во FrameLayout. Проблема в том, что при повороте экрана или при вылете с ошибкой фрагменты накладываются друг на друга на одно и то же место. Как решить проблему ?
Ответ
При повороте экрана активити пересоздаётся.
При пересоздании активити система пытается восстановить предыдущее состояние.
В предыдущем состоянии в активити добавлен фрагмент и система его восстанавливает, добавляя на экран.
После этого выполняется onCreate, где вы добавляете ещё один фрагмент. Итого их у вас (число поворотов экрана)*1
Вам надо просто проверять восстановила ли активити к-л фрагмент, поискав его во FragmentManager по ID контейнера, и, если нет, то добавлять его:
cardStation = getSupportFragmentManager().findFragmentById(R.id.layout_for_fragment);
if (cardStation == null)
{
cardStation = new CardStation();
getSupportFragmentManager().
beginTransaction().add(R.id.layout_for_fragment, cardStation)
.commit();
}
Комментариев нет:
Отправить комментарий