ViewPager中的第二个选项卡为空

问题描述 投票:0回答:1

我正在使用ViewPager和TabLayout。问题是我的第二个选项卡始终为空。我不知道为什么,但是所有数据都保存在选项卡1中。即使我尝试为选项卡1和2加载数据,选项卡1也为选项卡2保存数据。我必须添加选项卡1和2的片段工作正常。下面是ViewPager类和MainActivity。

适配器

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;

import com.example..TabsFragment.A;
import com.example..TabsFragment.B;

public class DataAdapter extends FragmentStatePagerAdapter {


    public  DataAdapter(FragmentManager fm ){

        super(fm);

    }

    @Override
    public Fragment getItem(int position) {

        switch (position){
            case 0:
                return new A;
            case 1:
                return new B;

                default:
                    return null;
        }

    }

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

活动

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar= findViewById(R.id.tool_bar);
    final TextView textView= findViewById(R.id.textView2);
    setSupportActionBar(toolbar);

    TabLayout tabLayout = findViewById(R.id.tab_layout);
    tabLayout.addTab(tabLayout.newTab().setText("A"));
    tabLayout.addTab(tabLayout.newTab().setText("B"));
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    final ViewPager viewPager= findViewById(R.id.view_pager);
    DataAdapter dataAdapter = new DataAdapter(getSupportFragmentManager(),tabLayout.getTabCount());
    viewPager.setAdapter(dataAdapter);
    viewPager.setOffscreenPageLimit(0);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {

            viewPager.setCurrentItem(tab.getPosition());
            int position= tab.getPosition();

            if(position==1){
                textView.setText("A");

            }

            if(position==0){
                textView.setText("B");

            }
        }

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


        }

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

        }
    });

}
android android-viewpager android-tablayout
1个回答
0
投票

只需将getCount()大小替换为2,否则将根据制表符大小的数量动态设置,检查下面的代码

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;

import com.example..TabsFragment.A;
import com.example..TabsFragment.B;

public class DataAdapter extends FragmentStatePagerAdapter {


    public  DataAdapter(FragmentManager fm ){

        super(fm);

    }

    @Override
    public Fragment getItem(int position) {

        switch (position){
            case 0:
                return new A;
            case 1:
                return new B;

                default:
                    return null;
        }

    }

    @Override
    public int getCount() {
        return 2;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.