简体   繁体   English

Viewpager里面的Android Viewpager没有显示布局

[英]Android Viewpager inside of Viewpager not showing layout

I have been tasked with creating a very unorthodox layout that can only be accomplished with a viewpager inside the second pane of another viewpager, thankfully the outer viewpager needs to be locked so the task was a little more realistic, however the unexpected issue arose where after the inner viewpager was loaded onCreateView is never called, I can see that it is sliding side to side so the inner viewpager is setup but it will not load any inner view for some odd reason, any help will go a long way thanks 我的任务是创建一个非常非传统的布局,只能通过另一个viewpager的第二个窗格内的viewpager完成,谢天谢地,外部viewpager需要被锁定,因此任务更加真实,但是出现了意想不到的问题。内部viewpager加载onCreateView永远不会被调用,我可以看到它是左右滑动,所以内部viewpager设置但它不会加载任何内部视图由于一些奇怪的原因,任何帮助将有很长的路要走

Main Activity 主要活动

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_fragment);

    pagePosition = 0;

    setupViews();

}

private void setupViews() {

    //setup images to be changed later

    ivCategory = (ImageView) findViewById(R.id.ivCatergory);
    ivHome = (ImageView) findViewById(R.id.ivHome);
    ivProfile = (ImageView) findViewById(R.id.ivProfile);

    //setup the viewpager
    pager = (CustomViewPager) findViewById(R.id.viewpager);

    //add fragments to the fragment array
    pageList.add(NavigationFragment.newInstance(0, getApplicationContext(), this));
    pageList.add(NavigationFragment.newInstance(1, getApplicationContext(), this));
    pageList.add(NavigationFragment.newInstance(0, getApplicationContext(), this));


    // initialize the page adapter
    pageAdapter = new FragmentHomeAdapter(getSupportFragmentManager(), pageList);

    //set the page adapter to the viewpager
    pager.setAdapter(pageAdapter);

    //set homepage to be first
    pager.setCurrentItem(1);


    //disable swiping to mimic iphone behaviour
    pager.setPagingEnabled(false);


}

viewpager viewpager

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

    int pageType = getArguments().getInt(PAGE_TYPE);

    View v;


    if (pageType == 1) {//all inner fragments will happen here

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

        //setup the inner viewpager
        pager = (CustomViewPager) v.findViewById(R.id.viewpager);

        pageList.add(HomeFragment.newInstance(0, context, getActivity()));
        pageList.add(HomeFragment.newInstance(1, context, getActivity()));

        // initialize the page adapter
        pageAdapter = new FragmentHomeAdapter(getActivity().getSupportFragmentManager(), pageList);

        //set the page adapter to the viewpager
        pager.setAdapter(pageAdapter);

        pager.setPagingEnabled(true);

    }


    return v;
}

inner viewpager 内部观察者

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

    View v;

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

    lv = (ListView) v.findViewById(R.id.lvFeed);

    listAdapter = new ListHomeAdapter(getArguments().getInt(PAGE_TYPE), feedListItems, getActivity());

    //add header
    header = (ViewGroup) inflater.inflate(R.layout.list_item_header, lv, false);
    lv.addHeaderView(header, null, false);

    lv.setAdapter(listAdapter);

    if (getArguments().getInt(PAGE_TYPE) == 0) {

        new getFeedListItems().execute();

    } else {

        new getFeedListItems().execute();

    }

    Toast.makeText(context, "This never shows",
            Toast.LENGTH_SHORT).show();


    return v;
}

When showing Fragments inside another Fragment, use getChildFragmentManager() instead of getSupportFragmentManager() 在另一个片段中显示片段时,使用getChildFragmentManager()而不是getSupportFragmentManager()

Initialize your pageAdapter this way: 以这种方式初始化您的pageAdapter:

pageAdapter = new FragmentHomeAdapter(getChildFragmentManager(), pageList);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM