Android - Как взять представление из xml и использовать его во фрагменте?

1

Я создал GridView в моем XML файле, теперь хочу заполнить его в классе Fragment. (этот класс фрагментов использует этот макет)

userhome.xml

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/home_gridview"
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:layout_below="@+id/user_avatar"
android:paddingTop="16dp"
android:columnWidth="90dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center" />

public class UserHomeFragment extends Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    return inflater.inflate(R.layout.userhome, container, false);

}

Я действительно не знаю, как взять мой "home_gridview", я все пробовал, но не работает! Мне нужно это, потому что я хочу использовать его на одной из моих вкладок в панели действий. Можете ли вы мне помочь с кодом? Спасибо вам, ребята!

Теги:
android-fragments
android-actionbar
android-gridview

1 ответ

2
Лучший ответ

Оберните свой GridView внутри LinearLayout (или другого макета) следующим образом:

<LinearLayout 
GridView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/home_layout"
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:orientation="vertical">
    <GridView android:id="@+id/home_gridview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_below="@+id/user_avatar"
    android:paddingTop="16dp"
    android:columnWidth="90dp"
    android:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center" />
</LinearLayout>

Теперь в onCreateView найдите свой GridView по id:

public class UserHomeFragment extends Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view =  inflater.inflate(R.layout.userhome, container, false);
    GridView gridView = (GridView) view.findViewById(R.id.home_gridview);//must be your R not android.R
    //use your grid view

   return view;

}
  • 0
    Спасибо за помощь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню