#java #android
Пытаюсь заменить один фрагмент другим, через кнопку(btnKf_2) которая находиться в
первом фрагменте. Эмулятор запускается, а подмены фрагмента при нажатии кнопки не происходит.
Делаю псалтырь, в нем 22 фрагмента и куча кнопок. Использовал action bar в android studio.
public void onClick (View v) {
frag1 = new Kafuzma1();
frag2 = new Kafuzma2();
fTrans = getSupportFragmentManager().beginTransaction();
switch (v.getId()) {
case R.id.butKf_2:
fTrans.replace(R.id.frame_layout,frag2);
fTrans.addToBackStack(null);
default:
break;
}
fTrans.commit();
}
}
Отвечаю на свой вопрос.
СПАСИБО Andrew Goroshko.
Нужно было во фрагмент добавить вот этот код:
Button butKf_2 = rootView.findViewById(R.id.butKf_2);
butKf_2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Fragment kaf2 = new Kafuzma2();
FragmentManager fragmentManager = Objects.requireNonNull(getActivity()).getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_layout, kaf2);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
Ответы
Ответ 1
Я бы на вашем месте делал немного иначе логику приложения. Вот как бы получилось: есть родительская активность, в ней контейнер с фрагментами ваших кафизм, и кнопку с счетчиком я бы размещал в активности, потому что при нажатии на кнопку в фрагменте у вас подменяется фрагмент и получается что вам нужно делать одно и тоже действие много-много раз. А в вашем случае я бы лучше делал коммит в каждом case, возможно проблема из-за этого, вообще так выглядит переход из одного фрагмента в другой: Fragment fragment = new tasks(); FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.content_frame, fragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); код взял из своего проекта. Вообще у вас все должно быть нормально как уже говорил Дмитрий в комментарии. UPDATE: пришел в голову еще один вариант, вы можете заменять данные в фрагменте а не создавать кучу фрагментов (а именно 22), это будет более правильно на мой взгляд. Вы просто при нажатии на кнопку в активности посылаете в фрагмент данные о номере кафизмы и в фрагменте уже грузите эту кафизму по номер откуда вы ее получаете.
Комментариев нет:
Отправить комментарий