Страница 1 из 4
Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 02 сен 2012, 23:00
damager82
В этом уроке:
- динамически работаем с фрагментами
Click here to read this article!
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 17 сен 2012, 20:14
Jane
Добрый день! Столкнулась с такой проблемой: Есть action bar, вкладки, в каждой вкладке должно быть много фрагментов, но при переходе с вкладки на вкладку происходит наложение фрагментов. Может быть, вы знаете, как лучше организовать работу с фрагментами в этом случае?
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 19 сен 2012, 09:21
damager82
Возможно вы используете add вместо replace. В этом случае фрагменты накладываются друг на друга.
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 09 ноя 2012, 12:17
warner
Если пользоваться библиотекой support.v4 (чтобы приложение с фрагментами запускалось на старых андроидах (начиная с 1.6)) то при попытке скомпилировать пример из урока появится ошибка:
Type mismatch: cannot convert from android.app.FragmentTransaction to android.support.v4.app.FragmentTransaction
(даже при том, что в импортах стоит только import android.support.v4.app.FragmentTransaction;)
Обойти эту ошибку помогает использование getSupportFragmentManager()
и главная активити в таком случае дожна объявляться как public class MainActivity
extends FragmentActivity
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 14 ноя 2012, 11:46
damager82
warner писал(а):Если пользоваться библиотекой support.v4 (чтобы приложение с фрагментами запускалось на старых андроидах (начиная с 1.6)) то при попытке скомпилировать пример из урока появится ошибка:
Type mismatch: cannot convert from android.app.FragmentTransaction to android.support.v4.app.FragmentTransaction
(даже при том, что в импортах стоит только import android.support.v4.app.FragmentTransaction;)
Обойти эту ошибку помогает использование getSupportFragmentManager()
и главная активити в таком случае дожна объявляться как public class MainActivity
extends FragmentActivity
Да, код примеров не предназначен для запуска с библиотекой совместимости. Об этом будет отдельный урок.
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 19 ноя 2012, 20:25
Foenix
Люди, если кто-то разбирался с примером на сайте девелоперов
http://developer.android.com/reference/ ... gment.html
что такое там a_item? (поиском по страничке легко находится). Никак не пойму откуда взялось и почему на эту штуку меняется фрагмент?
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 20 ноя 2012, 13:53
Foenix
Что-то никто не посещает, но все равно спрошу по этому же примеру..
http://developer.android.com/guide/comp ... ml#Example
там написано, что один и тот же код можно запускать в виде фрагмента и в виде активити. Так вот мало того, что данный пример устарел, у меня еще он категорически ругается на попытку запустить новый инстанс фрагмента в качестве активити вот тут:
Код: Выделить всё
// Otherwise we need to launch a new activity to display
// the dialog fragment with selected text.
Intent intent = new Intent();
intent.setClass(getActivity(), DetailsActivity.class);
intent.putExtra("index", index);
>>>>startActivity(intent);
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 21 ноя 2012, 10:15
damager82
Походу баг. Здесь он тоже фигурирует -
http://developer.android.com/guide/comp ... ments.html
А в указанном ими файле FragmentLayout.java, который у меня нашелся, нет никакого a_item.
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 21 ноя 2012, 10:17
damager82
Olivka писал(а):ругается на попытку запустить новый инстанс фрагмента в качестве активити вот тут:
Код: Выделить всё
// Otherwise we need to launch a new activity to display
// the dialog fragment with selected text.
Intent intent = new Intent();
intent.setClass(getActivity(), DetailsActivity.class);
intent.putExtra("index", index);
>>>>startActivity(intent);
DetailsActivity - это у вас Acvtivity? В манифесте прописали его?
Какую конкретно ошибку выдает?
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 21 ноя 2012, 11:13
Foenix
Уже разобралась. Затупила сильно! Мне нужен был целый класс активити еще один, чтобы завернуть в него вызов этого куска фрагмента.
Мне вот еще что интересно.. а у фрагмента может быть свое меню? кнопочки там сверху и все такое..
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 22 ноя 2012, 09:18
damager82
Olivka писал(а):у фрагмента может быть свое меню? кнопочки там сверху и все такое..
Он может свои пункты в ActionBar добавлять. Урок 112.
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 22 ноя 2012, 11:29
Foenix
Ага, спасибо! уже читаю
Почитала, кстати, что след. урок будет про v4. Уже интересно, т.к. у меня есть активити с фрагментами, с которыми пришлось помучиться, в частности потому, что нужно было импортировать v4. Зачем тогда нужна обычная - не ясно, может, для старых версий..? В общем, жду.
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 28 ноя 2012, 23:31
Foenix
Сории, постирала сообщения. Сделала.
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 29 ноя 2012, 00:46
Foenix
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 09 фев 2013, 18:30
Snakebyte
Подскажите, есть основной лэйаут
Код: Выделить всё
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context=".Quiz" >
<FrameLayout
android:id="@+id/headerFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
</FrameLayout>
<FrameLayout
android:id="@+id/mainFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" >
</FrameLayout>
<FrameLayout
android:id="@+id/footerFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true" >
</FrameLayout>
</RelativeLayout>
Когда в центральный фрагмент помещаю контейнер с ListView
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:scrollbars="horizontal" >
<ListView
android:id="@+id/groupsList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:scrollbars="horizontal" >
</ListView>
</RelativeLayout>
содержимое наползает на верхний и нижний фрагменты.
Как сделать, чтобы список обрезало по границе центрального фрагмента?
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 14 фев 2013, 13:25
damager82
Добавьте в mainFragment, что он должен быть ниже (below) чем headerFragment и выше (Above) чем footerFragment.
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 14 фев 2013, 15:15
Snakebyte
Пробовал так, центральный фрагмент вообще не отображается.
Зная высоту нижнего фрагмента, задал центральному bottom margin, все красиво, но вылезает другой глюк - при прокрутке списка невидимые до этого элементы отрисовываются с содержимым спрятавшихся при прокрутке.
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 18 фев 2013, 15:56
ibop
А вот подскажет мне кто, пытаюсь всё воссоздать по образцу, но немного под свой проект запилить. Но getSupportFragmentManager() возвращает всегда null... Походу не срабатывает инфлэйт. Но не могу понять, в чём дело
Соответственно, если пытаюсь получить доступ к любым вьюшкам фрагмента - то вылетает Exception, так как к самому фрагменту я так и не подключился
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 24 фев 2013, 23:54
lacabomba
Метод add не позволяет повторно загрузить тот же фрагмент (например, если повторно нажать кнопку "Add", то приложение вылетает с ошибкой и в логах пишет что фрагмент уже загружен). Мудрил мудрил с проверкой и понял, что проще вместо add использовать replace. Логика у replace судя по описанию такая, что сначала из контейнера все удаляется, а потом загружается нужный фрагмент. По-моему, одни плюсы: не будет наслоений, не нужно городить проверки всякие. Может есть какой то более правильный способ?
Re: Урок 105. Android 3. Fragments. Динамическая работа
Добавлено: 25 фев 2013, 00:46
rezak90
если вы внимательно посмотрите туториалы и семплы то увидите что везде используется replace так как он замещает фрагмент фрагментом и предыдущий уходит в "сон" тем самым не давай по себе кликать