Кнопка «Домой» на панели инструментов фрагмента Android не работает должным образом | Android studio

#android #fragment #toolbar

Вопрос:

Если я нахожусь в каком-то фрагменте(не в домашнем фрагменте), если я нажимаю кнопку «Домой» (панель инструментов), то текущий фрагмент заменяется фрагментом «Домой» (он работает правильно).

Теперь проблема в том, что (после нажатия кнопки «Домой»), если я нажму кнопку «Назад», все приложение перестанет работать или когда-нибудь содержимое двух фрагментов перекрывается

MainActivity.xml

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <include
        android:id="@ id/toolbar"
        layout="@layout/tool_bar" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/botton_navigation"
        android:layout_below="@id/toolbar">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <FrameLayout
                android:id="@ id/frame_area"                                  (*) focus here
                android:layout_width="match_parent"
                android:layout_height="match_parent">


            </FrameLayout>


        </LinearLayout>

    </ScrollView>

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@ id/botton_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:elevation="4dp"

        app:itemBackground="@color/college_color_dark"
        app:itemIconTint="@color/white"
        app:itemTextColor="@color/white"
        app:labelVisibilityMode="unlabeled"
        app:menu="@menu/bottom_menu" />

</RelativeLayout>

 

MainActivity.class

 homeFragment = new HomeFragment();
        if(savedInstanceState == null){
                                   (*) this part should executes
            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.frame_area, homeFragment);
            fragmentTransaction.commit();
        }
 

тем же классом ниже.

 public boolean onOptionsItemSelected(MenuItem item) {

if(item.getItemId()==R.id.home){ //home button in toolbar
            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.frame_area, homeFragment);
            fragmentTransaction.commit();



        }
}
 

Кто-нибудь может сказать мне, где я ошибаюсь ?

Комментарии:

1. Что означает «все приложение перестает работать»? Если произойдет сбой, включите полную трассировку стека. Какие еще фрагментные транзакции вы делаете? Используют ли они addToBackStack() ?

2. case 0: newsFragment = new NewsFragment(); activity.getSupportFragmentManager().beginTransaction().replace(R.id.frame_area, newsFragment).addToBackStack(null).commit(); ; каждый фрагмент, который я делаю, это