pass data to another fragment by swipe view with tab android studio,not button

后端 未结 4 761
别那么骄傲
别那么骄傲 2020-12-11 04:05

Is it possible to pass a data from fragment to fragment by swipe?

There are many articles teaching us how to pass the data from fragment to fragment, but most of t

4条回答
  •  被撕碎了的回忆
    2020-12-11 05:00

    To transfer data from one fragment to another fragment when swipe is performed ,firstly you should get the view of the each fragment.here is the sample code that can help you out a bit. write this code in Activity:

     mviewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        mviewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                adapter = ((SOFragmentPagerAdapter) mviewpager.getAdapter());
    
    //getting the view of fragments at positions              
    
    
     if(position==0)
                {
                    View v = null;
                 Fragment1=(Fragment1)adapter.getFragment(position);
                    v=fragment1.getMyView();//this is how you get the view
                    ListView lv=(ListView)v.findViewById(R.id.lv_services);
                    ArrayAdapter arrayAdapter=new ArrayAdapter(SOListItemSelectedActivity.this,android.R.layout.simple_list_item_1,soRequestFragment.al_list_of_services);
                    lv.setAdapter(arrayAdapter);
                }
    
                if(position==1)
                {
    
    
                }
            }
    
            @Override
            public void onPageSelected(int position) {
                if(position==0)
                {
                    View v = null;
                    soRequestFragment=(SORequestFragment)adapter.getFragment(position);
                    v=soRequestFragment.getMyView();
                }
                if(position==1)
                {
    
    
                }
            }
    
            @Override
            public void onPageScrollStateChanged(int state) {
    
            }
        });
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                mviewpager.setCurrentItem(tab.getPosition());
            }
    
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
    
            }
    
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
    
            }
        });
    

    and create a FragmentPagerAdapter as:

    public class SOFragmentPagerAdapter extends FragmentPagerAdapter {
    HashMap mPageReferenceMap;
    int mNumOfTabs;
    public SOFragmentPagerAdapter(FragmentManager fm,int mNumOfTabs) {
        super(fm);
        this.mNumOfTabs=mNumOfTabs;
        mPageReferenceMap=new HashMap();
    }
    
    @Override
    public Fragment getItem(int position) {
          switch (position)
          {
              case 0:
                  Fragment1 fragment1=new tFragment1();
                  mPageReferenceMap.put(position,fragment1);
                  return fragment1;
    
              case 1:
                  Fragment2 fragment2=new Fragment2();
                  mPageReferenceMap.put(position,fragment2);
                  return fragment2;
    
              default:
                  return null;
          }
    
    }
    public Fragment getFragment(int key) {
        return mPageReferenceMap.get(key);
    }
    @Override
    public int getCount() {
        return 2;
    }}
    

    In Fragments add the getmyview() which will return the view of that fragment as:

    public void getmyview()
    

    { return myview;//myview is fragment view which you will return in oncreateview method }

    Note: Viewpager execute onpagescroll first and get the position 0,1 and when you scroll ,views at position 1,2 will execute and page selected 0 will execute. For tabselections: Tabunselected,Tabselected Tab reselected is the sequence of execution. so write accordingly in the respective positions of fragments. Hope this helps you.

提交回复
热议问题