#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), это будет более правильно на мой взгляд. Вы просто при нажатии на кнопку в активности посылаете в фрагмент данные о номере кафизмы и в фрагменте уже грузите эту кафизму по номер откуда вы ее получаете.
Комментариев нет:
Отправить комментарий