在标签布局活动中,我的片段在刷卡时不会刷新

时间:2017-07-10 06:16:42

标签: android fragment

我正在使用fragmentpageradapter来膨胀片段,这是我的编码。 我正在一个片段中添加购物车项目并将其显示给其他片段,并且所有片段都以标签布局显示。我的问题是购物车项目在刷片段时不会刷新其他片段。

public class ProfileDetailePagerAdapter extends FragmentPagerAdapter 
   {
    int TabCount;
    HashMap<Integer, String> mFragmentTags;
    FragmentManager mFragmentManager;
    private boolean isPagingEnabled = true;

    public ProfileDetailePagerAdapter(FragmentManager fm, int TabCount) {
        super(fm);
        this.TabCount = TabCount;
        mFragmentTags = new HashMap<Integer, String>();
        mFragmentManager = fm;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                MenuFragment tab1 = new MenuFragment();
                return tab1;
            case 1:
                SelectMember_fragment tab2 = new SelectMember_fragment();
                return tab2;
            case 2:
                ViewCart_fragment tab3 = new ViewCart_fragment();
                return tab3;
          /*  case 3:
                PaymentMode_fragment tab4=new PaymentMode_fragment();
                return tab4;*/
        }
        return null;
    }

    @Override
    public int getCount() {
        return TabCount;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Object obj = super.instantiateItem(container, position);
        if (obj instanceof Fragment) {
            // record the fragment tag here.
            Fragment f = (Fragment) obj;
            String tag = f.getTag();
            mFragmentTags.put(position, tag);
        }
        return obj;
    }


    public Fragment getFragment(int position) {
        String tag = mFragmentTags.get(position);
        if (tag == null)
            return null;
        return mFragmentManager.findFragmentByTag(tag);
    }
}

2 个答案:

答案 0 :(得分:1)

  

此方法用于添加将在tab时调用的侦听器   选择变化。

tabLayoutOBJ.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){
        public void onTabReselected(TabLayout.Tab tab) {

        }
        public void onTabSelected(TabLayout.Tab tab){
            String getTAB = (String)tab.getText();
            // Do your WORK 

        }
        public void  onTabUnselected(TabLayout.Tab tab){

        }
    });

答案 1 :(得分:0)

背后的原因是viewpager的实现。在ViewPager中有一个名为offset的属性,可以在其旁边生成准备好的片段,直到offset(int)值。

默认值为1.例如,您处于第1个位置,也会创建第0个和第2个位置。

另一方面,如果你处于第0位,则1st是唯一创建的片段。如果向右滑动(进入第1个),则将创建第2个。

我假设您正在从第一个片段更改共享对象,并希望通过更改的数据通知第二个片段。要解决它,您需要使用监听器。解决它的优雅方法是在共享对象中添加观察者模式。

祝你好运

埃姆雷