2 freedom wings5 freedom_wings5 于 2016.03.07 23:07 提问

安卓,viewpager中什么都不显示,求指点

应该已经用fragmentPagerAdapter设置好了fragment,可是viewpager set了adapter后,什么都没有。
先上图:
图片说明

图片说明
下面是content_main,在其中添加了viewpager的组件

 <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent"


    tools:showIn="@layout/activity_main" tools:context=".MainActivity"
    android:id="@+id/drawerlayout">




        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    <ListView
        android:id="@+id/listview"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:background="#ff6666"
        android:layout_gravity="left">

    </ListView>

</android.support.v4.widget.DrawerLayout>

下面是FragmentPagerAdapter:

 public class MyFragmentPagerAdapter extends FragmentPagerAdapter
{
    List<Fragment> list;
    String[] titles;
    public Fragment getItem(int position)
    {
        return list.get(position);

    }
    public int getCount()
    {
        return list.size();
    }
    MyFragmentPagerAdapter(FragmentManager fm,List<Fragment> list,String[] titles)
    {
        super(fm);
        this.list=list;
        this.titles=titles;
    }
    public CharSequence getPageTitle(int position)
    {
        return titles[position];
    }

}

下面是mainActivity中的与viewpager有关的部分:

  List<Fragment> listFragment=new ArrayList<Fragment>();
        listFragment.add(f1);
        listFragment.add(f2);
        listFragment.add(f3);
        listFragment.add(f4);
        listFragment.add(f5);
        viewPager=(ViewPager)super.findViewById(R.id.viewpager);
        fragmentPagerAdapter=new MyFragmentPagerAdapter(getSupportFragmentManager(),listFragment,new String[]{"标签1","标签2","标签3","标签4","标签5"});
       viewPager.setAdapter(fragmentPagerAdapter);
        tabLayout=(TabLayout)super.findViewById(R.id.tablayout);
        for(int i=0;i<5;i++)
        {
            tabLayout.addTab(tabLayout.newTab());
        }
        tabLayout.setTabMode(TabLayout.MODE_FIXED);
        tabLayout.setupWithViewPager(viewPager);

下面是填充viewpager第一页的fragment1的代码:

 public class Fragment1 extends Fragment
{
    RecyclerView recyclerView;
    MyAdapter myAdapter;

    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanced)
    {
        View v=inflater.inflate(R.layout.fragment1,container,false);
        myAdapter=new MyAdapter(getActivity());
            recyclerView=(RecyclerView)v.findViewById(R.id.recyclerview);

        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getActivity());
        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(myAdapter);
        return v;
    }
}

从上图已可见,这部分内容是不显示的,以下是viewpager第二页的fragment2:

 public class Fragment2 extends Fragment
{
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanced)
    {
        View v=inflater.inflate(R.layout.fragment2,container,false);
        return v;
    }

}

后面的fragment与此fragment类似,就不贴了。viewpager中什么都没有,但是从上面MainActivity中的setupWithViewPager的tabLayout就可以获取到标题。
请问应该怎么解决?

6个回答

luochoudan
luochoudan   Ds   Rxr 2016.03.08 14:50

f1,f2,f3,f4,f5实例化了?

huangf321123
huangf321123   2016.03.08 15:40

MyFragmentPagerAdapter 这个类里面加一个destroyItem方法试下

qq519934599
qq519934599   2016.03.08 16:51

View v=inflater.inflate(R.layout.fragment1,container,false);
这句中inflater是怎么实例化的?

zcj324
zcj324   2016.06.28 10:58

ViewPager控件的高度判定好像有问题,比如把它的属性layout_height="match_parent" 改成 layout_height="200dp"就能显示了,当然实际是不希望这样改的,你看看ViewPager的父容器有没有ScrollView之类的高度不确定的,去掉,或改改。

devmiao
devmiao   Ds   Rxr 2016.03.07 23:08
wen_wxpk
wen_wxpk   2016.03.08 08:34

哥们,viewpager要设change监听啊,不然手机怎么知道你换页面了,好像是onPageChangeListener

freedom_wings5
freedom_wings5 我不需要在页面切换的时候做些什么,所以就不用设置监听了。这里viewpager切换页面的时候tablayout能自动切换。另外我的问题是viewpager中的内容不显示
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!