У меня есть код, который создает вкладки динамически.
Это мой MyActivity.java:
public class MyActivity extends AppCompatActivity {
.
.
.
.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.audit_form_activity);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
try {
JSONObject jsonObj = new JSONObject(page);
JSONArray jssArray = jsonObj.getJSONArray("AuditQuestions");
int jsonArrLength = jssArray.length();
no_of_categories = jsonArrLength;
for (int i = 0; i < jsonArrLength; i++) {
JSONObject jsonChildObj = jssArray.getJSONObject(i);
categoryName.add(jsonChildObj.getString("categoryName"));
}
} catch (JSONException e) {
e.printStackTrace();
}
viewPager = (ViewPager) findViewById(R.id.pager);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setOffscreenPageLimit(no_of_categories);
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
tabLayout.setOnTabSelectedListener(onTabSelectedListener(viewPager));
}
private void setupViewPager(ViewPager viewPager) {
Pager adapter = new Pager(getSupportFragmentManager());
for (int i = 0; i < no_of_categories; i++) {
Tab1 tab1 = new Tab1();
adapter.addFragment(tab1, categoryName.get(i));
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
onTabSelectedListener(viewPager);
}
}
private TabLayout.OnTabSelectedListener onTabSelectedListener(final ViewPager pager) {
return new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
};
}
}
Это мой адаптер Pager.java:
public class Pager extends FragmentStatePagerAdapter {
int mNumOfTabs;
Fragment fragment = null;
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public Pager(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 mFragmentTitleList.get(position);
}
}
При удалении этой строки из MyActivity.java, содержимогоесть ли во вкладках даже после перехода со страницы вкладок и возврата:
viewPager.setOffscreenPageLimit(no_of_categories);
Но это не решает проблему, потому что содержимое, отображаемое на вкладках, несовместимо, т. е. содержимое, которое должно появитьсяв одной вкладке появляется на другой вкладке.
Я пытался решить ее, но безуспешно.Может быть, это связано с жизненным циклом фрагментов?
Как мне решить эту проблему?
Не удалось найти никакого решения для этого.Пожалуйста, помогите.
Любая помощь будет оценена.
Заранее спасибо!