Страницы

Поиск по вопросам

пятница, 5 июля 2019 г.

Переход во фрагмент при нажатии на кнопку

Всем добрый вечер, уже какой день мучаюсь с этими фрагментами, все никак не могу реализовать, например, у нас есть активити, на нем расположена кнопка, и при нажатии на нее, сразу же открывается новое окно фрагмент. Вот в этом приложении так реализовано. https://play.google.com/store/apps/details?id=com.formul.fizik&hl=ru Нажимаем и открывается. Обновление Дело в том, что реализовать переход из одного активити в другое активити, проблем нет, но я никак не пойму, как с помощью фрагментов можно сделать быстрый переход, возьмем тот же справочник, который выше. При нажатии на кнопку, мгновенно открывается содержание определенной темы. К сожалению ошибка http://joxi.ru/GrqBoweHQnpGmz Ошибку исправил, но у меня получается при нажатии на фрагмент появляется фрагмент, и кнопки остаются, и я могу нажать еще раз и еще раз на кнопку и так кол-во раз, появится фрагмент. Обновление 2 Я исправил импорт с import android.support.v4.app.Fragment; на import android.app.Fragment; - ошибка пропала. Я создал layout: activity_main и fragment. Fragment1.class и MainActivity В Fragment.class я прописал public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment1, null); } } А в MainActivity заскринил http://joxi.ru/1A5J4n9tn0BprE Так же fragment.xml http://joxi.ru/Y2LDVWqH9wyJ26 activity_main http://joxi.ru/l2ZYByVHwDKGmJ


Ответ

Принцип тут такой: 1) В разметке активити есть контейнер (FrameLayout, например) с id="yours_id". 2) В активити, при нажатии на кнопку, добавляем фрагмент в контейнер: Fragment yoursFragment=new YoursFragment(); FragmentTransaction trans=getFragmentManager().beginTransaction(); trans.add(R.id.yours_id, yoursFragment); trans.commit(); 3) Чтобы всё это работало, вам скорее всего придётся переделать всю логику активити под фрагменты (т.е. кнопка, запускающая открытие фрагмента тоже должна быть во фрагменте, и оба фрагмента должны быть в одном контейнере); Обновление Если же вы хотите, чтобы на экране "исчезали" все кнопки и 1-й фрагмент появлялся поверх всего, то вам надо сами кнопки встроить в другой фрагмент. Далее при старте активити добавлять фрагмент с кнопками (в FrameLayout), а при нажатии на одну из них делать trans.replace(R.id.yours_id, frag1); trans.addToBackStack(null); trans.commit(); Так у вас будет всё содержимое с экрана по нажатию кнопки заменяться на frag1, а при нажатии на кнопку "назад" показываться опять фрагмент с кнопками.

Комментариев нет:

Отправить комментарий