更改片段,ViewPager [英] Change Fragment with ViewPager

查看:139
本文介绍了更改片段,ViewPager的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 PagerSlidingTab ViewPager 。我想改变片段,同时滚动标签。这是工作的罚款。看看我的code。

我使用 AsynTask()每个片段
当在App打开与MainActivity,第一块碎片附着到的活性,但它示出了两个 AsynTask()对话消息,一个来自第一和另一个从第二片段。当我滚动到第二个选项卡,它显示三片段的对话消息。

所以,如果我从左侧到右侧标签滚动时,片段你对当前的片段显示,如果我从右向左滚动,在片段留到当前显示片段

请帮我解决这个问题。

我的code:

 公共类PageSlidingTabStripFragment扩展片段{

    公共静态最终字符串标记= PageSlidingTabStripFragment.class
            .getSimpleName();

    公共静态PageSlidingTabStripFragment的newInstance(){
        返回新PageSlidingTabStripFragment();
    }

    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        setRetainInstance(真正的);
    }

    @覆盖
    公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
            捆绑savedInstanceState){
        返回inflater.inflate(R.layout.pager,集装箱,假);
    }

    @覆盖
    公共无效onViewCreated(查看视图,捆绑savedInstanceState){
        super.onViewCreated(查看,savedInstanceState);

        PagerSlidingTabStrip标签=(PagerSlidingTabStrip)查看
                .findViewById(R.id.tabs);
        ViewPager寻呼机=(ViewPager)view.findViewById(R.id.pager);

        MyPagerAdapter适配器=新MyPagerAdapter(getChildFragmentManager());

        pager.setAdapter(适配器);
        tabs.setViewPager(寻呼机);
    }

    公共类MyPagerAdapter扩展FragmentPagerAdapter {

        公共MyPagerAdapter(android.support.v4.app.FragmentManager FM){
            超(FM);
        }

        私人最终的String []业权= {即时机遇,事件,
                专家};

        @覆盖
        公共CharSequence的getPageTitle(INT位置){
            返回TITLES [位置]
        }

        @覆盖
        公众诠释getCount将(){
            返回TITLES.length;
        }

        @覆盖
        公共片段的getItem(INT位置){
            开关(位置){
            情况下0:
                返回新InstantOpportunity();
            情况1:
                回到新的活动();
            案例2:
                返回新的专家();
            默认:
                打破;
            }

            返回null;
        }
    }
}
 

解决方案

请使用此example..its非常easy.i已经实现了。

参考链接

希望它有用you.its最佳寻呼机滑动标签栏的例子。

使用

 的FrameLayout强制性的:
的FrameLayout FL =新的FrameLayout(getActivity());
        fl.addView(urFragementView);
 

,然后设置在此的FrameLayout您fragement看法。

I am using PagerSlidingTab Library for ViewPager. And I want to change Fragment while scrolling of tabs. It is working fine. Check out my code.

I am using AsynTask() on each Fragment.
When the App opens with the MainActivity, First Fragment is attached to the activity, But It shows two AsynTask() dialog message, one from First and another from Second Fragment. And When I scroll to second tab, It shows dialog message of Third Fragment.

So, If I scroll from left to right in tabs, the Fragment right to the current fragment is displayed and if i scroll from right to left, the Fragment left to the current Fragment is displayed.

Please help me to solve the problem.

My Code:

public class PageSlidingTabStripFragment extends Fragment {

    public static final String TAG = PageSlidingTabStripFragment.class
            .getSimpleName();

    public static PageSlidingTabStripFragment newInstance() {
        return new PageSlidingTabStripFragment();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.pager, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) view
                .findViewById(R.id.tabs);
        ViewPager pager = (ViewPager) view.findViewById(R.id.pager);

        MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager());

        pager.setAdapter(adapter);
        tabs.setViewPager(pager);
    }

    public class MyPagerAdapter extends FragmentPagerAdapter {

        public MyPagerAdapter(android.support.v4.app.FragmentManager fm) {
            super(fm);
        }

        private final String[] TITLES = { "Instant Opportunity", "Events",
                "Experts" };

        @Override
        public CharSequence getPageTitle(int position) {
            return TITLES[position];
        }

        @Override
        public int getCount() {
            return TITLES.length;
        }

        @Override
        public Fragment getItem(int position) {
            switch (position) {
            case 0:
                return new InstantOpportunity();
            case 1:
                return new Events();
            case 2:
                return new Experts();
            default:
                break;
            }

            return null;
        }
    }
}

解决方案

please use this example..its very easy.i already implement that.

reference link

hope its useful to you.its best example of pager-sliding-tabstrip.

Use

framelayout compulsory:
FrameLayout fl = new FrameLayout(getActivity());
        fl.addView(urFragementView);

and then set your fragement view in this framelayout.

这篇关于更改片段,ViewPager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆