Когда я пытаюсь перейти с экрана Home_Fragment на экран второго фрагмента, я получаю белый фоновый экран, а затем, когда я снова пытаюсь перейти от второго фрагмента к Home_Fragment, я получаю белый фон в моем приложении. Пожалуйста, объясните мне, почему я сталкиваюсь с такими проблемами. Я загружаю свой проверенный код.
загрузить код домашнего фрагмента
private void loadHomeFragment() {
selectNavMenu();
setToolbarTitle();
if (getSupportFragmentManager().findFragmentByTag(CURRENT_TAG) != null) {
drawer.closeDrawers();
return;
}
Runnable mPendingRunnable = new Runnable() {
@Override
public void run() {
homeFragmentCalled();
}
};
if (mPendingRunnable != null) {
mHandler.post(mPendingRunnable);
}
drawer.closeDrawers();
invalidateOptionsMenu();
}
Просмотр навигации
private void setUpNavigationView() {
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.home:
navItemIndex = 0;
CURRENT_TAG = TAG_TIMETABLE;
homeFragmentCalled();
break;
case R.id.nav_performance:
navItemIndex = 1;
CURRENT_TAG = TAG_PERFORMANCE;
secondFragmentCalled();
break;
default:
navItemIndex = 0;
}
if (menuItem.isChecked()) {
menuItem.setChecked(false);
} else {
menuItem.setChecked(true);
}
menuItem.setChecked(true);
loadHomeFragment();
return true;
}
});
ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.openDrawer, R.string.closeDrawer) {
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
};
drawer.setDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();
}
Вызов метода фрагмента для навигации
public void homeFragmentCalled() {
Log.d("MainActivity ", "homeFragmentCalled called ");
homeFragment = new HomeFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
fragmentTransaction.replace(R.id.frame, homeFragment, "homeFragment");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
public void secondFragmentCalled() {
performanceFragment = new PerformanceFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
fragmentTransaction.replace(R.id.frame, performanceFragment, "performanceFragment");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
Я погуглил и нашел много вопросов. Я следил за многими ответами, но такая же ошибка - это код, который я использовал
replace'add
Изменил цвет фона фрагмента, а также сделал
fragmentTransaction.addToBackStack(null);
Извините за мой английский, заранее спасибо.
попробовать удалить fragmentTransaction.addToBackStack(null);?
в fragmentTransaction.addToBackStack (null) вместо передачи null передает уникальное значение каждый раз при замене фрагмента. и после проверки вашего Home и PerformanceFragment в обоих представлениях, раздувается или нет, я думаю, что эти два могут быть проблемой. пожалуйста, поделитесь кодом фрагмента вы оба.
Я пытаюсь удалить эту строку ==> fragmentTransaction.addToBackStack (null); , Но такая же проблема.
открытый класс HomeFragment расширяет фрагмент, реализует View.OnClickListener {public HomeFragment () {} @Override public View onCreateView (LayoutInflater inflater, контейнер ViewGroup, Bundle savedInstanceState) {View rootView = inflater.inflate (R.layout.testing, container, false); return rootView; }}
@LovekushVishwakarma
Вы можете сказать, что есть в PerformanceFragment и PerformanceFragment?