Показать белый экран при переходе назад через фрагмент?

Если я нажимаю обратно на домашний фрагмент, то показываю белый экран и после того, как снова нажимаю приложение, завершается, я вызываю домашний фрагмент в методе 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");
            }
Другие вопросы по тегам