Страницы

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

суббота, 11 апреля 2020 г.

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

#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.: рекомендую из личного опыта работы с сайтом. Иногда, конечно, материал подан как-то сжато, но для введения в вопрос и его достаточно.

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

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