У меня есть следующий код, чтобы создать ViewPager с фрагментами:Restart/обновить onCreateView когда ViewPager показан фрагмент
// Create tabs for viewpager
FragmentPagerItemAdapter adapter = new FragmentPagerItemAdapter(
getSupportFragmentManager(), FragmentPagerItems.with(this)
.add(R.string.tab_stuff, Stuff.class)
.add(R.string.tab_profile, Profile.class)
.create());
// Give the viewpager an adapter
viewPager = (ViewPager) findViewById(R.id.view_pager);
viewPager.setAdapter(adapter);
Я также дать пользователю возможность изменить текущую страницу на ViewPager с меню на ящик:
// Navigation view listener
navigationView.setNavigationItemSelectedListener(new NavigationView
.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
item.setChecked(true);
switch (item.getItemId()) {
// Item: shows stuff and then closes the drawer
case R.id.navdrawer_stuff:
viewPager.setCurrentItem(0);
drawerLayout.closeDrawers();
return true;
в Трикси вещи приходит, когда присоединен фрагмент и по методу OnCreateView происходит это:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
// Check if user is logged in and subbed
logged = Prefs.getBoolean(LOGGED, false);
subbed = Prefs.getBoolean(SUB, false);
meal = Prefs.getBoolean(DAY_DIET, false);
email = Prefs.getString(USERMAIL, "");
// If user is logged and subbed
if (logged && subbed) {
// Inflate the proper layout
View view = inflater.inflate(
R.layout.diets_user_subbed,
container,
false
);
try {
currentDayMeal(email);
} catch (JSONException e) {
e.printStackTrace();
}
checkMealsListener(view);
return view;
} else if (logged) {
View view = inflater.inflate(
R.layout.no_sub,
container,
false
);
return view;
} else {
View view = inflater.inflate(
R.layout.no_sub_no_reg,
container,
false
);
return view;
}
}
Теперь все это работает как шарм, пока я не изменю значения logged или subbed, и OnCreateView больше не проверяет, какой макет загружается. Он работает, если я закрываю приложение и перезапускаю его, но как только он откроется, он не будет повторно проверен.
Любые идеи? Благодарю.
Извините, но не могли бы вы дать мне пример? –
Я попробую это, спасибо. –