【问题标题】:Finding Tab position from another Fragment从另一个 Fragment 中查找 Tab 位置
【发布时间】:2018-06-14 18:00:54
【问题描述】:

在我的 fragment_whatsHappening 中,我有一个选项卡式 viewPagerAdapter,它显示星期几。 (今天,周二,周三,周四,周五,周六,周日) 每个选项卡都会扩充 fragment_schedules_view,其中包含一个显示当天要执行的任务的 recyclerView。 fragment_schedules_view.class 包含recyclerView

    ViewPager viewPager = (ViewPager)rootView.findViewById(R.id.schedulesPager);
    SchedulesViewPagerAdapter tabAdapter = new SchedulesViewPagerAdapter(getChildFragmentManager());

    // Add Fragments to adapter one by one
    tabAdapter.addFragment(new fragment_schedules_view(), "Today");
    tabAdapter.addFragment(new fragment_schedules_view(), "Tue");
    tabAdapter.addFragment(new fragment_schedules_view(), "Wed");
    tabAdapter.addFragment(new fragment_schedules_view(), "Thu");
    tabAdapter.addFragment(new fragment_schedules_view(), "Fri");
    tabAdapter.addFragment(new fragment_schedules_view(), "Sat");
    tabAdapter.addFragment(new fragment_schedules_view(), "Sun");
    viewPager.setAdapter(tabAdapter);

    TabLayout tabLayout = (TabLayout)rootView.findViewById(R.id.scheduleTabs);
    tabLayout.setupWithViewPager(viewPager);

在我的 fragment_schedules_view.class 中有没有办法从 fragment_whatsHappening.class 中获取 tabAdapter 位置?

【问题讨论】:

  • 如果它是用户当前正在查看的片段,您实际上只需要在片段中运行代码。您真的只需要让片段知道用户何时滑动到该片段吗?
  • 是的,我愿意。它用于计算日期,以便 recyclerView 从相关日期子项中检索信息。 (我从中检索的数据库子项的格式如下(04-06-2018))选项卡用于检索未来 7 天的数据

标签: android android-viewpager android-tabs


【解决方案1】:

ViewPager getCurrentItem 中有一个方法返回 int,当前查看页面的位置。

【讨论】:

    【解决方案2】:

    使用 OnTabSelectedListener 并使用我的片段中的接口在每次选项卡位置更改时更新索引。

    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
            //reference your method from your other fragment. In my case the 
           // onTabSchedulesChanged method from my fragment_schedules_view.class
    
    
    
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
    
            }
    
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
    
            }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多