Изменение части пользовательского интерфейса с использованием Fragment - PullRequest
0 голосов
/ 07 декабря 2011

Я хотел бы иметь заголовок с меню и иметь возможность изменять только оставшуюся часть пользовательского интерфейса (т. Е. Заголовок и меню никогда не перезагружаются, содержимое перезагружается, когда пользователь выбирает параметр в меню).

*******************************************
*               header                    *
*******************************************
* option1 | option2 | option3 | option4...*
*******************************************
*                                         *
*           content to be updated         *
*           according to the option       *
*           selected in the menu          *
*                                         *
*                                         *
*******************************************

Я собирался использовать ViewFlipper и добавлять / удалять макет для контента, но я читал, что для сложного контента может быть лучше использовать фрагмент.Единственный пример, который я видел, - это использование TabHost и TabWidget, но у меня есть собственное меню, в котором не используется TabWidget.

Могу ли я использовать ViewFlipper с одним фрагментом для каждой опции меню?

Любая помощь / предложение / указатель приветствуются ...

Спасибо

1 Ответ

0 голосов
/ 07 декабря 2011

На самом деле вам не нужен ViewFlipper для этого.

Особенность фрагментов в том, что вы можете заменить существующий фрагмент другим, просто вызвав метод для его замены. Это работает с использованием (Linear, Relative, в зависимости от того, что вы предпочитаете, но это не имеет значения, насколько я заметил) и полностью заменяет его фрагментом.

Скажем, вы назвали макет mainContent. Это LinearLayout, встроенный в основной файл макета с вашим меню над ним. Затем вы можете добавить к нему фрагмент (например, OptionOne), используя следующий метод:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.add(R.id.mainContent, new OptionOne());
        ft.commit();

Если вы хотите заменить его содержимым OptionTwo, вы можете просто заменить его следующим образом:

FragmentTransaction ft = getActivity().getSupportFragmentManager()
                .beginTransaction();
ft.replace(R.id.mainView, new Biography(appID, formID, title))
                    .addToBackStack(null);
ft.commit();

Примечание. Для этого я использовал совместимую версию фрагментов, поэтому ваш код может отличаться. Кроме того, чтобы иметь возможность использовать этот метод, вам необходимо изменить все текущие действия, которые вы хотите использовать, например, на Fragments.

...