Показать белый экран при переходе назад через фрагмент?
Если я нажимаю обратно на домашний фрагмент, то показываю белый экран и после того, как снова нажимаю приложение, завершается, я вызываю домашний фрагмент в методе Container_activity Oncreate. Я хочу, чтобы при нажатии на домашний фрагмент приложение было закрыто и не показывало пустой экран. мой код:-
public class Home_fragment extends Fragment {
ViewFlipper viewFlipper;
int[] images = {R.drawable.home_first, R.drawable.home_second, R.drawable.home_third};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.home_fragment, container, false);
viewFlipper = (ViewFlipper) view.findViewById(R.id.simpleViewFlipper);
for (int i = 0; i < images.length; i++) {
ImageView imageView = new ImageView(getActivity());
imageView.setImageResource(images[i]);
viewFlipper.addView(imageView);
}
Animation in = AnimationUtils.loadAnimation(getActivity(), android.R.anim.slide_in_left);
Animation out = AnimationUtils.loadAnimation(getActivity(), android.R.anim.slide_out_right);
viewFlipper.setInAnimation(in);
viewFlipper.setOutAnimation(out);
viewFlipper.setFlipInterval(3000);
viewFlipper.setAutoStart(true);
return view;
}
}
Класс деятельности:-
public class Container_Activity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
FrameLayout frameLayout;
static Container_Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_container_);
if (android.os.Build.VERSION.SDK_INT >= 21) {
Window window = this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(this.getResources().getColor(R.color.statusbarcolor));
}
activity = this;
Container_Activity.showFragment(new Home_fragment(), "");
frameLayout = (FrameLayout) findViewById(R.id.container_frame);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return false;
}
public static void showFragment(Fragment fragment, String Tag) {
FragmentManager manager = activity.getSupportFragmentManager();
FragmentTransaction transcation = manager.beginTransaction();
transcation.replace(R.id.container_frame, fragment, Tag);
transcation.addToBackStack(null);
transcation.commit();
}
}
3 ответа
редактировать
при добавлении домашнего фрагмента не используйте
transcation.addToBackStack(null);
для фрагмента, кроме дома, вы можете использовать
transcation.addToBackStack(null);
Удалить ниже строки из вашего showFragment()
функция
transcation.addToBackStack(null);
Для вас требование transcation.add
вместо выключения transcation.replace
,
fragTransaction.add (int containerViewId, фрагментный фрагмент, строковый тег)
Добавить фрагмент в состояние активности. Этот фрагмент может также иметь свое представление (если Fragment.onCreateView возвращает ненулевое значение) в контейнерное представление действия.
transcation.add(R.id.container_frame, fragment, Tag);
Прочесть разницу между add (), replace()
fragTransaction.addToBackStack() // не включайте это в свой первый фрагмент.//
if(getSupportFragmentManager().getBackStackEntryCount() !=1){
fragmentTransaction.addToBackStack("placeholder");
}