从选项卡片段调用活动视图

时间:2021-03-20 13:01:59

标签: android android-tablayout

我有一个主要活动,它有一个选项卡布局,其中有两个片段。以下是相同的代码。

  public void setViewPager(){
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    viewPager = (ViewPager) findViewById(R.id.pager);
    final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
    viewPager.setAdapter(adapter);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

    chipGroup.removeAllViews();
    utils.createChip(getLayoutInflater(),R.layout.chipview,chipGroup,arrayListFilter);

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            Log.d("hgfdgf","+"+tab.getPosition());
            if(tab.getPosition()==0){
                fragment=new StudyNotes_fragment();
                chipGroup.removeAllViews();
                utils.createChip(getLayoutInflater(),R.layout.chipview,chipGroup,arrayListFilter);

                //filter_iv_booklet.setVisibility(GONE);
            }
            else if (tab.getPosition()==1){
                fragment2=new Specialbooklet_fragment();
                chipGroup.removeAllViews();
                utils.createChip(getLayoutInflater(),R.layout.chipview,chipGroup,arrayListFilter2);


                //filter_iv_booklet.setVisibility(VISIBLE);

            }
            viewPager.setCurrentItem(tab.getPosition());
        }
        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
        }
        @Override
        public void onTabReselected(TabLayout.Tab tab) {
        }
    });
}

@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onClick(View v) {

}

public class PagerAdapter extends FragmentStatePagerAdapter {

    int mNumOfTabs;
    public PagerAdapter(FragmentManager fm, int NumOfTabs) {
        super(fm);
        this.mNumOfTabs = NumOfTabs;
    }
    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                for (int i=0;i<=studyM.size()-1;i++){
                    arrayListFilter.add(studyM.get(i).get(i).getCSubjectName());
                     }
                LayoutInflater li = LayoutInflater.from(context);

                HashSet<String> hashSet = new HashSet<String>();
                hashSet.addAll(arrayListFilter);
                arrayListFilter.clear();
                arrayListFilter.addAll(hashSet);
                Bundle args = new Bundle();
                args.putStringArrayList("array2",arrayListFilter);
                args.putSerializable("array4",studyM);
                args.putSerializable("tag",makeFragmentName(viewPager.getId(), 1));
                fragment.setArguments(args);
                return fragment;

            case 1:
                for (int i=0;i<=specialB.size()-1;i++){
                    arrayListFilter2.add(specialB.get(i).get(i).getCSubjectName());
                    }
                LayoutInflater li1 = LayoutInflater.from(context);

                HashSet<String> hashSet1 = new HashSet<String>();
                hashSet1.addAll(arrayListFilter2);
                arrayListFilter2.clear();
                arrayListFilter2.addAll(hashSet1);
                String fragmentTag2 = makeFragmentName(viewPager.getId(), 2);


                Bundle args1 = new Bundle();
                args1.putSerializable("array", specialB);
                args1.putStringArrayList("array2",arrayListFilter2);
                args1.putStringArrayList("array3",videosubtitlelist);
                args1.putString("tag",fragmentTag2);
                fragment2.setArguments(args1);
                return fragment2;

                //return   Specialbooklet_fragment.newInstance(specialB,arrayListFilter2,videosubtitlelist,fragmentTag2);

            default:

                return null;
        }
    }
    @Override
    public int getCount() {
        return mNumOfTabs;
    }






}

我正在使用片段中活动工具栏中的按钮。我正在使用 getactivity 在片段中访问它。下面是我的代码。

rl_filter = activity.findViewById(R.id.rl_filter);
filter_iv = activity.findViewById(R.id.filter_iv);
chipGroup = activity.findViewById(R.id.chipgroup);
applyfilter_tv = activity.findViewById(R.id.applyfilter_tv);
clearfilter_tv = activity.findViewById(R.id.clearfilter_tv);
filter_iv.setOnClickListener(this::onClick);
rl_filter.setOnClickListener(this::onClick);
clearfilter_tv.setOnClickListener(this::onClick);
applyfilter_tv.setOnClickListener(this::onClick);

我在第二个片段中做同样的事情。我的问题是当我在两个片段中定义视图时,只有第二个片段的点击才起作用。如果我正在从第二个片段中删除侦听器和按钮的初始化,那么第一个片段点击工作。有什么办法可以在两个片段中使用活动视图。

0 个答案:

没有答案