0

使用gridview创建片段的正确方法是什么?我可以这样做吗?

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview1"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:background="#FF0000"

    android:numColumns="2"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="0dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>

以及如何在运行时将适配器添加到 gridview 以向其中添加项目?

private void initialisePaging() {

    List<Fragment> fragments = new Vector<Fragment>();
    fragments.add(Fragment.instantiate(this, fragment1.class.getName()));
    fragments.add(Fragment.instantiate(this, fragment2.class.getName()));
    fragments.add(Fragment.instantiate(this, fragment3.class.getName()));
    this.mPagerAdapter  = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);
    //this.mPagerAdapter.setListener(this);
    Log.e("init", "message");
    pager = (ViewPager)super.findViewById(R.id.viewpager_menu);
    pager.setAdapter(this.mPagerAdapter);

    GridView gridView = (GridView)findViewById(R.layout.menu1_fragment);
}

当我这样做时,gridview 为空,我无法将适配器附加到它。

4

1 回答 1

1

instantiateItem您应该在您的方法中查找/配置单个页面上的视图PagerAdapter,而不是在配置寻呼机本身时。每个页面都是在需要时懒惰地创建的,并且instantiateItem是每个页面都调用它来设置它。在您尝试在此处找到您的GridView实例时,它还不存在,因为寻呼机尚未创建它,并且您尚未将其本地化到要设置的页面。

于 2012-12-10T17:24:04.267 回答