У меня есть фрагмент с TabLayout, который выглядит следующим образом:
Код, в котором он создается:
public class CalendarActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_calendar);
SimpleDateFormat sdf = new SimpleDateFormat("EEE dd-MM", new Locale("en", "GB"));
TabLayout tabLayout = findViewById(R.id.tabs);
final ViewPager viewPager = findViewById(R.id.viewPager);
tabLayout.addTab(tabLayout.newTab().setText("today"));
tabLayout.addTab(tabLayout.newTab().setText("tomorrow"));
tabLayout.addTab(tabLayout.newTab().setText(sdf.format(new Date(((new Date()).getTime() + 2*86400000)))));
tabLayout.addTab(tabLayout.newTab().setText(sdf.format(new Date(((new Date()).getTime() + 3*86400000)))));
tabLayout.addTab(tabLayout.newTab().setText(sdf.format(new Date(((new Date()).getTime() + 4*86400000)))));
tabLayout.addTab(tabLayout.newTab().setText(sdf.format(new Date(((new Date()).getTime() + 5*86400000)))));
tabLayout.addTab(tabLayout.newTab().setText(sdf.format(new Date(((new Date()).getTime() + 6*86400000)))));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
PageAdapterCalendar adapter = new PageAdapterCalendar (getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
Код адаптера:
public class PageAdapterCalendar extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PageAdapterCalendar (FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch(position){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
fragment = CalendarFragment.newInstance();
break;
}
return fragment;
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
newinstance () во фрагменте календаря:
public static Fragment newInstance() {
CalendarFragment fragment = new CalendarFragment();
return fragment;
}
Мне нужно, чтобы каждая из моих вкладок работала одинаково и использовала один и тот же макет, но я тольконеобходимо отправить им информацию о дате (так же, как это указано в их заголовке), чтобы они могли получать разные данные из базы данных.Я пробовал пакеты и теги, но они не сработали, как я ожидал - пакеты были добавлены все на каждую вкладку, а теги не загружены в часть onCreate () (я думаю?), Поэтому они были пустыми.