当前位置: 首页 > 知识库问答 >
问题:

选定的选项卡没有传递到tablayout中的片段

华温书
2023-03-14

在一个简单的tabLayout view viewPager设置中,我无法正确地将选定的选项卡传递到其中的片段。当从左到右选择选项卡时(即Tab1->tab x),该选项卡被正确解释,但当它们从右到左选择时,返回0。

下面是重要的代码:

TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);

    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
    viewPager.setAdapter(new OwnPagerAdapter(getSupportFragmentManager(), NavDrawer.this));

    tabLayout.setupWithViewPager(viewPager);
public class OwnPagerAdapter extends FragmentPagerAdapter {
private int TAB_COUNT = 7;
private String tabTitles[] = new String[] {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
private Context context;

public OwnPagerAdapter(FragmentManager fm, Context context) {
    super(fm);
    this.context = context;

}

@Override
public Fragment getItem(int position) {
    return OwnTimetableFragment.newInstance(position - 1);
}

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

@Override
public CharSequence getPageTitle(int position) {
    return tabTitles[position];
}
}
public class OwnTimetableFragment extends Fragment {

public static final String ARG_DAY = "ARG_DAY";

private int mDay;

public static OwnTimetableFragment newInstance(int day) {
    Bundle args = new Bundle();
    args.putInt(ARG_DAY, day);
    OwnTimetableFragment fragment = new OwnTimetableFragment();
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mDay = getArguments().getInt(ARG_DAY);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View tabView = inflater.inflate(R.layout.fragment_own_timetable, container, false);
Log.e("mDay", mDay + "");
    return tabView;
}

似乎有一些碎片进入和离开焦点可能是导致这一点的原因?

共有1个答案

魏高邈
2023-03-14

首先,在新实例中传递pos-1,因此,第一个选项卡将log显示为-1。如果您想要正确的值,只需在NewInstance中传递pos。除此之外,请确保在ViewPager中没有传递任何setOffscreenPageLimit。代码中的其他内容似乎都是正常的。让我知道你的确切问题,如果你仍然面临它。

 类似资料:
  • 我正在使用带有的,我想知道如何最有效地更改TabLayout中选定选项卡的图标的颜色。 谷歌的Youtube应用程序是如何实现这一点的完美参考。在主页上,有四个深灰色图标。选择特定选项卡后,选项卡图标变为白色。 没有任何第三方库,我怎样才能达到同样的效果? 一个可能的解决方案显然是用选择器。但是在这种情况下,我必须找到图标的白色和灰色版本,然后在选项卡被选中或取消选中时切换图标。我想知道是否有一个

  • 我想将数据从父片段传递到选项卡式片段(子片段),以便传递初始数据(当父片段第一次加载时),我使用了Bundle数据。当在子片段的嵌套片段中时,我调用PopbackStack(),以便通过单击按钮返回。在那里,我需要更新之前传递到子选项卡片段的捆绑数据。捆绑数据不会得到更新的数据集 父片段-初始状态 子片段-Tab片段 孩子- 我错过了什么?请帮忙

  • 我试图在片段中创建自定义listView,我搜索了其他问题,但找不到任何东西。我的列表适配器是这样的 我的片段类是这样的: } 问题是这部分:CustomList adapter=新CustomList(tab1.this,string,imageId);构造函数(public CustomList(活动上下文,字符串[]web,整数[]imageId))只接受活动 我怎样才能解决这个问题?

  • 问题内容: 我是Java文盲,并且仍在尝试开发供个人使用的应用程序。我从android-studio的“ Tabbed- Activity”开始,除MainActivity中的一个片段和一个捆绑包外,其他大部分都没有改变。 这是我的代码: 主要活动 SectionsPagerAdapter 最后是 SunFragment ,我希望从MainActivity中获得捆绑的数据: 我已经按照此博客进行操

  • 因此,我今天的梁工作以以下警告结束: /usr/local/lib/python2。7/dist包/apache_-beam/runners/dataflow/dataflow_-runner。py:800:BeamDeprecationWarning:自第一个稳定版本以来,选项已被弃用。提及。选项将不受支持 所以据我所知,与其这样做: 我将不得不谈到这一点: 但有一个问题,很多选项不再可用,例如

  • 我试图创建一个标签,显示一个列表的左手片段和一个详细的片段在右边。当用户单击列表项时,右边的片段应该更改为适当的片段。 我是android新手,所以我使用了一个教程,我知道我需要用TabListener做一些事情:

  • 我试图修改JavaFX8中的TabPage控件,使其向视口显示当前选定选项卡前面(右边)的一些选项卡,或者如果选定选项卡位于标题的最左边,它会显示当前选项卡前面附近的选项卡。 现在怎么样了: 我想让它表现得像: 当用户选择索引X的选项卡时,选项卡窗格标题显示附近的另外2或3个选项卡。 谢谢你的阅读。