Настройка макета 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
был выполнен