android - 查看寻呼机 fragment 和选项卡不同步android

标签 android android-viewpager fragmentpageradapter android-tablayout

在我的项目中,我有一个选项卡布局和一个 fragment View 页面。当我加载 fragment 和选项卡时,选项卡索引和显示的 fragment 不同步,而且当我来回滑动时, fragment 与选项卡不同步。我检查了getItem(int position)getTitle(int position)方法都具有相同的位置号和ArrayList<Fragments>中的相应条目。和 ArrayList<String> (对于选项卡标题)是正确的,但选项卡的显示方式与 View 寻呼机不同步。

这是我的fragmentPagerAdapter.java

    public class DetailsFragmentPagerAdapter extends FragmentPagerAdapter {

    private ArrayList<Fragment> fragments;
    private ArrayList<String> titles;

    public DetailsFragmentPagerAdapter(FragmentManager fm) {
        super(fm);
        fragments = new ArrayList<>();
        titles = new ArrayList<>();
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }

    @Override
    public int getCount() {
        return titles.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titles.get(position);
    }

    public void setFragment(Fragment fragment, String title) {
        fragments.add(fragment);
        titles.add(title);
        notifyDataSetChanged();
    }
}

这是创建 Activity 。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_details);
    tabLayout = (TabLayout) findViewById(R.id.detailsTabs);
    viewPager = (ViewPager) findViewById(R.id.viewPager);
    new GetCategoriesAsync2().execute();
}

正在调用的异步任务的 doInBackground 正在准备数组列表

和 onPostExecute

@Override
    protected void onPostExecute(Void aVoid) {
        int size = lists.size();
        ArrayList<Fragment> fragments = new ArrayList<>(size);
        ArrayList<String> titles = new ArrayList<>(size);
        for (int i = 0; i < lists.size(); i++) {
            ArrayList<String> x = lists.get(i);
            titles.add(x.remove(0));
            fragments.add(DetailsListFragment.newInstance(x));
        }
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentPagerAdapter = new DetailsFragmentPagerAdapter(fragmentManager);
        fragmentPagerAdapter.setFragments(fragments,titles);
        viewPager.setAdapter(fragmentPagerAdapter);
        tabLayout.setupWithViewPager(viewPager);
        progressDialog.dismiss();
    }

我正在使用设计支持库 23.0.1,构建目标是 23。 如何修复此选项卡布局不同步?

最佳答案

如果您使用TabLayout ,您需要将其连接到适配器

If you're using a ViewPager together with this layout, you can use setTabsFromPagerAdapter(PagerAdapter) which will populate the tabs using the given PagerAdapter's page titles. You should also use a TabLayout.TabLayoutOnPageChangeListener to forward the scroll and selection changes to this layout like so:

ViewPager viewPager = ...;
 TabLayout tabLayout = ...;
 viewPager.addOnPageChangeListener(new TabLayoutOnPageChangeListener(tabLayout));

关于android - 查看寻呼机 fragment 和选项卡不同步android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34391393/

相关文章:

android - 带有滑动 TabLayout 的 ViewPager 中的 Listview - 高度问题

android - 根据 Activity fragment 更改 Activity 中的搜索功能

java - 解析 : How can I get Relation from a local data store (. ..fromLocalDatastore())?

android - 从字符串数据的键获取 bool 数据后 SharedPreference 崩溃

android - ViewPager Fragments 未在 onCreate 中启动

android - 如何使用选项卡布局设置标题

android - 为什么 FragmentPagerAdapter saveState 总是空的?

android - 在 SherlockFragmentActivity 的 FragmentPagerAdapter 中更新 fragment View

android - 没有此类属性:类com.android.builder.core.AndroidBuilder的bootClasspath

java - 如何在android中自定义导航?