Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android选项卡式活动复制选项卡_Java_Android_Android Viewpager_Android Tablayout - Fatal编程技术网

Java Android选项卡式活动复制选项卡

Java Android选项卡式活动复制选项卡,java,android,android-viewpager,android-tablayout,Java,Android,Android Viewpager,Android Tablayout,这里发生了一些奇怪的事情,当我从1st tab进入2nd tab时,我创建了一个带有查看页面的rss提要应用程序,3rd tab的内容将进入2nd tab。当我从第二个选项卡转到第一个选项卡时,第一个选项卡的内容将转到第二个选项卡。没有任何逻辑的东西混合在一起(或者我找不到逻辑),为什么会发生这样的事情?在进入下一个选项卡之前,有没有办法清除当前选项卡?(不知道这是我应该问的正确问题) 这是我的密码 public class datafragment extends Fragment { Vi

这里发生了一些奇怪的事情,当我从1st tab进入2nd tab时,我创建了一个带有查看页面的rss提要应用程序,3rd tab的内容将进入2nd tab。当我从第二个选项卡转到第一个选项卡时,第一个选项卡的内容将转到第二个选项卡。没有任何逻辑的东西混合在一起(或者我找不到逻辑),为什么会发生这样的事情?在进入下一个选项卡之前,有没有办法清除当前选项卡?(不知道这是我应该问的正确问题)

这是我的密码

public class datafragment extends Fragment {
View view;
ViewPager viewPager;
TabLayout tabLayout;


@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view= inflater.inflate(R.layout.sample,container,false);


    viewPager = (ViewPager) view.findViewById(R.id.viewpager);
    viewPager.setAdapter(new sliderAdapter(getChildFragmentManager()));
    tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
    tabLayout.post(new Runnable() {
        @Override
        public void run() {
            tabLayout.setupWithViewPager(viewPager);
        }
    });

    return view;

}

private class sliderAdapter extends FragmentPagerAdapter{

    final  String tabs[]={"tab1", "tab2","tab3"};
    public sliderAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment= null;
        switch (position){
            case 0:
                fragment = new RssFragment();
                break;

            case 1:
                fragment = new RssFragment1();
                break;
            case 2:
                  fragment = new RssFragment2();
                break;
        }
        return fragment;
    }

    @Override
    public int getCount() {


       return 3;
    }
   @Override
   public CharSequence getPageTitle(int position) {
        return tabs[position];
   }
}

 }
在添加答案之后

 public class datafragment extends Fragment {
View view;
ViewPager viewPager;
TabLayout tabLayout;


@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


    view= inflater.inflate(R.layout.sample,container,false);
    viewPager = (ViewPager) view.findViewById(R.id.viewpager);
    viewPager.setAdapter(new SliderAdapter(getChildFragmentManager()));
    tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
   // tabLayout.post(new Runnable() {
   //     @Override
   //     public void run() {
   //         tabLayout.setupWithViewPager(viewPager);
   //     }
   // });

    **setupViewPager(viewPager);**

    return view;

}



private void setupViewPager(ViewPager viewPagerProfile)
{
    SliderAdapter  adapter = new SliderAdapter (getActivity().getSupportFragmentManager());
    adapter.addFragment(new RssFragment(), "tab1");
    adapter.addFragment(new RssFragment1(), "tab2");
    adapter.addFragment(new RssFragment2(), "tab3");

    viewPagerProfile.setAdapter(adapter);
}

public class SliderAdapter  extends FragmentPagerAdapter
{
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public SliderAdapter (FragmentManager manager)
    {
        super(manager);
    }

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

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

    public void addFragment(Fragment fragment, String title)
    {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position)
    {
        return null;
    }
}


}
公共类数据片段扩展了片段{
视图;
查看页面查看页面;
表格布局;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
视图=充气机。充气(右布局。样品,容器,假);
viewPager=(viewPager)view.findViewById(R.id.viewPager);
setAdapter(新的SliderAdapter(getChildFragmentManager());
tabLayout=(tabLayout)view.findviewbyd(R.id.sliding_选项卡);
//tabLayout.post(新的Runnable(){
//@覆盖
//公开募捐{
//tabLayout.setupWithViewPager(viewPager);
//     }
// });
**设置viewPager(viewPager)**
返回视图;
}
专用无效设置ViewPager(ViewPager viewPagerProfile)
{
SliderAdapter=新的SliderAdapter(getActivity().getSupportFragmentManager());
addFragment(新的RssFragment(),“tab1”);
addFragment(新的RssFragment1(),“tab2”);
addFragment(新的RssFragment2(),“tab3”);
viewPagerProfile.setAdapter(适配器);
}
公共类SliderAdapter扩展FragmentPagerAdapter
{
私有最终列表MFFragmentList=new ArrayList();
私有最终列表MFFragmentTitleList=new ArrayList();
公共滑块适配器(碎片管理器)
{
高级经理;
}
@凌驾
公共片段getItem(int位置)
{
返回MFFragmentList.get(位置);
}
@凌驾
public int getCount()
{
返回MFFragmentList.size();
}
public void addFragment(片段片段,字符串标题)
{
添加(片段);
MFFragmentTitleList.add(标题);
}
@凌驾
公共字符序列getPageTitle(int位置)
{
返回null;
}
}
}
尝试以下方法:

private void setupViewPager(ViewPager viewPagerProfile)
        {
            SliderAdapter  adapter = new SliderAdapter (getSupportFragmentManager());
            adapter.addFragment(new RssFragment(), "tab1");
            adapter.addFragment(new RssFragment1(), "tab2");
            adapter.addFragment(new RssFragment2(), "tab3");

            viewPagerProfile.setAdapter(adapter);
        }
自定义适配器:

public class SliderAdapter  extends FragmentPagerAdapter
{
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public SliderAdapter (FragmentManager manager)
    {
        super(manager);
    }

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

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

    public void addFragment(Fragment fragment, String title)
    {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position)
    {
        return null;
    }
}

请添加您的xml文件请参考问题@Ayushkharew与您的屏幕截图,很多事情变得更加清楚。你可能想看看这个,你能给我一个答案吗?你发布的代码似乎没有任何问题。问题是当你滑动碎片时如何检索你的
listView
。我必须创建另一个适配器?我不明白你的意思,你能根据我的值编辑答案吗?只需用我的适配器替换你的适配器,然后在oncreate中调用setupViewPager。setupViewPager呢?我应该在哪里添加setupViewPager
TabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener()
{
    @Override public void onTabSelected(TabLayout.Tab tab)
    {
        //Code here for selected fragment 
    }

    @Override public void onTabUnselected(TabLayout.Tab tab)
    {

    }

    @Override public void onTabReselected(TabLayout.Tab tab)
    {

    }
});