Настройка макета XML в фрагменте - Android

Я новичок в программировании Android. Я создал основную активность в своем стиле приложения в магазине Google, используя ActionBarSherlock и NavigationTabs, с фрагментами, каждый из которых ссылается на другое действие (фрагмент 1, фрагмент 2 и т. Д.) И каждый фрагмент надувает макет.

Тем не менее, я привык создавать макеты в XML и затем настраивать их в Java. Поместить другой текст в зависимости от времени суток или в соответствии с некоторыми данными в базе данных, предоставляя функции кнопкам и т. Д. Но в классе фрагментов я даже не могу использовать setContentView для работы с каждым текстом или кнопкой, и установить контекст для использования моей базы данных вызывает у меня проблемы.

Как я могу настроить макет XML во фрагменте? Или что было бы правильно сделать?

Вот мой фрагмент:

public class Fragment1 extends SherlockFragment{


public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    return inflater.inflate(R.layout.menu, container, false);

}

3 ответа

Решение

Это проще, чем вы думаете. onCreateView instanciate au возвращает представление для вашего фрагмента. Как вы сказали, в простом Activity вы устанавливаете (и создаете экземпляр) представление с помощью setContentView(), а затем вы получаете ваши Views с помощью findViewById ().

findViewById () просит представление вернуть элемент представления, который вы хотите, вы можете вызвать его из своего представления перед возвратом. Как это:

public class Fragment1 extends SherlockFragment{

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    View v = inflater.inflate(R.layout.menu, container, false);

    // For example, getting a TextView
    TextView tv = (TextView) v.findViewById(R.id.myTextView);
    // do your job

    return v;
}

Пока все хорошо, вам просто нужно использовать раздуваемый вид, чтобы получить все.

вот пример

View v = inflater.inflate(R.layout.menu, container, false);

Button b = (Button)v.findViewById(r.id.button1);

return v;

Внутри onActivityCreated Вы могли бы использовать:

View mView = getView();
TextView textView = (TextView) view.findViewById(R.id.theIdOfTextView);

где theIdOfTextView объявлен внутри R.layout.menu,

getView() возвращает View вы надулись внутри onCreateView, Вы используете его только после onCreateView был выполнен

Другие вопросы по тегам