Я знаю, что этот вопрос задан, но ответа мне не удалось.фрагмент, созданный дважды при изменении ориентации
У меня есть фрагмент с видом ресайклера в нем. У меня есть кнопка, которая может отображать и скрывать этот фрагмент. Все это работает нормально до тех пор, пока изменение экрана не изменится. Затем фрагмент воссоздается, а один сверху показан и скрыт, но есть тот, за которым он остается.
Я понимаю, что нужно использовать
if (savedInstanceState == null)
где-то, но не удается преуспеть там, где. Большое спасибо, Вот мой код.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
recyclerViewFragment = new RecyclerViewFragment();
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.add(R.id.recycle_view_container, recyclerViewFragment, RECYCLER_FRAGMENT);
trans.commit();
trans.show(recyclerViewFragment);
Button showHideButton = (Button)findViewById(R.id.button_show_hide);
showHideButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showHideFragment(recyclerViewFragment);
}
});
showHideButton.playSoundEffect(SoundEffectConstants.CLICK);
}
public void showHideFragment(final Fragment fragment){
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.setCustomAnimations(android.R.anim.slide_in_left , android.R.anim.slide_out_right);
if (fragment.isHidden()) {
trans.show(fragment);
Log.d("hidden","Show");
} else {
trans.hide(fragment);
Log.d("Shown","Hide");
}
trans.commit();
}
Спасибо большое, ребята !!!!!!!
Большое спасибо. Это работает. Есть ли что-то не так с ответом ниже, чтобы просто заменить add на замену? – RJB
Я не думаю, что использование замещения работает. Я не уверен, но если вы спрячете фрагмент, тогда поверните экран, я думаю, что фрагмент появится без нажатия кнопки – Sam
. Вы совершенно правы. Спасибо!!! – RJB