我正在使用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) {
}
});
}
只需将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;
}
}