#android_fragment #java #android
Всем добрый вечер, уже какой день мучаюсь с этими фрагментами, все никак не могу реализовать, например, у нас есть активити, на нем расположена кнопка, и при нажатии на нее, сразу же открывается новое окно фрагмент. Вот в этом приложении так реализовано. 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
Принцип тут такой: 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, а при нажатии на кнопку "назад" показываться опять фрагмент с кнопками.Ответ 2
Добрый вечер, @Verteletsky! Я понял Ваш вопрос и могу посоветовать почитать следующие статьи: Android 3. Fragments. Lifecycle Android 3. Fragments. Динамическая работа Android 3. Fragments. Взаимодействие с Activity и это: Android 3. Fragments. ListFragment - список Android 3. Fragments. DialogFragment - диалог Думаю, если Вам нужно вывести небольшое окно на экран, то Вам нужна ссылка №5. Если фрагмент на весь экран, то ознакомьтесь со ссылками №1-3. Ссылки ведут на уроки с сайта startandroid.ru. Рекомендую добавить данный сайт себе в закладки, в будущем пригодится. P.S.: рекомендую из личного опыта работы с сайтом. Иногда, конечно, материал подан как-то сжато, но для введения в вопрос и его достаточно.
Комментариев нет:
Отправить комментарий