Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
#1

Drawer от гугл + fragment - Программирование Android

31.01.2014, 15:46. Просмотров 765. Ответов 0
Метки нет (Все метки)

Всем привет!
Делаю программу с Drawer.
Все сделал как написано в доках http://developer.android.com/intl/ru...av-drawer.html

ПРосмотрел пример прриложения от туда же.

Но в приложении переключаются картинки. На сколько я понял, я могу в rootView вместо картинок подставлять фрагменты, но не могу разобраться как это сделать.

Как мне показалось, надо в коде:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private class DrawerItemClickListener implements ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            selectItem(position);
        }
    }
 
    private void selectItem(int position) {
        // update the main content by replacing fragments
        Fragment fragment = new PlanetFragment();
        Bundle args = new Bundle();
        args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
        fragment.setArguments(args);
 
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
 
        // update selected item and title, then close the drawer
        mDrawerList.setItemChecked(position, true);
        setTitle(mPlanetTitles[position]);
        mDrawerLayout.closeDrawer(mDrawerList);
    }
указать ему что открывается fragment а не рисунок.

Подскажите путь что именно поправить и как ему сказать чтобы он в rootView показал нужный фрагмент

Спасибо большое

Добавлено через 45 минут
Собственно у меня сейчас вот так выглядит:
Java
1
2
3
4
5
6
7
8
9
10
11
        private class DrawerItemClickListener implements ListView.OnItemClickListener {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                selectItem(position);
                if (position == 0) {
                    fTrans = getFragmentManager().beginTransaction();
                    fTrans.add(R.id.content_frame, calc);
                    fTrans.commit();
                }
            }
        }
При этом при выборе position==0 ничего не меняется, но транзакция судя по всему проходит, потому что если я опять кликаю по position==0 - программа закрывается с ошибкой:
Fragment already added

Добавлено через 6 часов 48 минут
Собственно докапался вот до такого кода в MainActivity:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static class PlanetFragment extends Fragment {
        public static final String ARG_PLANET_NUMBER = "planet_number";
 
        public PlanetFragment() {
            // Empty constructor required for fragment subclasses
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.menu_array)[i];
 
            int imageId = getResources().getIdentifier(planet.toLowerCase(Locale.getDefault()),
                            "drawable", getActivity().getPackageName());
            ((ImageView) rootView.findViewById(R.id.image)).setImageResource(imageId);
            getActivity().setTitle(planet);
            return rootView;
        }
    }


В нем определяется новый фрагмент в xml файле fragment.xml :
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    android:gravity="center"
    android:padding="32dp" />


Прав ли я, что мне надо поменять в файле fragment ImageView на Fragment и в классе PlanetFragment я должен определять fragment а не image ???

Если не сложно, подскажите кодом как это сделать. Если надо выложу весь проект. А то в гугле все показывают гугловый сэмпл с картинками и все.

Спасибо

Добавлено через 1 час 26 минут
Проблема решилась следующим образом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment, container, false);
            int i = getArguments().getInt(ARG_PLANET_NUMBER);
            String planet = getResources().getStringArray(R.array.menu_array)[i];
 
            if (i == 0) {
                fragment = new Calc();
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
            } {
                 //и так далее
}
            getActivity().setTitle(planet);
            return rootView;
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 15:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Drawer от гугл + fragment (Программирование Android):

Обновление fragment из другого fragment - Программирование Android
Добрый вечер всем!! Подскажите пожалуйста как обновить один фрагмент из другого (а именно TextView и ArrayAdapter)?

Navigation Drawer - Программирование Android
Пытаюсь разобраться с Navigation Drawer. Делаю по гайду https://github.com/codepath/android_guides/wiki/Fragment-Navigation-Drawer и в...

Navigation Drawer - Программирование Android
помогите найти ошибку. код главного активити package ua.com.cls; import android.annotation.SuppressLint; import...

Material Drawer - Программирование Android
Здравствуйте, помогите, пожалуйста, разобраться: 1) создал тулбар с менюшкой, отлично работает, однако если добавить в разметку еще слой...

Drawer Layout - Программирование Android
Имеется Drawer Layout со списком меню. Каждое меню кликабельно и меняет Fragment-ы. При нажатии на пункт списка выполняется метод: ...

Navigation Drawer - Программирование Android
Всем привет. Подскажите в чем может быть проблема. Создал Navigation Drawer по этому примеру. http://habrahabr.ru/post/250765/ добавил туда...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 15:46
Привет! Вот еще темы с ответами:

Navigation drawer - Программирование Android
Скажите, как сделать так чтобы при открытии другого activity, navigation drawer можно было так же с левой стороны на экране вызвать? При...

Navigation drawer - Программирование Android
Как так подключить navigation drawer чтобы он был доступен не в одном а во всех или в нескольких активити приложения и во всех этих...

Добавление navigation drawer - Программирование Android
Привет, есть приложение со множеством активити... нужно запихнуть в него navigation drawer c иконками и текстом к ним. И у меня почти это...

Navigation Drawer - ошибка - Программирование Android
Возникает ошибка при установке drawerListener public class MainActivity extends Activity { String email; DrawerLayout...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru