onBackPressed меняет цвет иконок в соответствии стоящего фрагмента в FragmentTabHost

Есть 4 RelativeLayout замещённые в низу, они выполняют функцию кнопки, также есть FragmentTabHost, в котором отображается fragment. Получается своего рода кастомный BottomBar. По нажатию на каждый из этих RelativeLayout открывается определённый фрагмент и меняется цвет содержимого данного RelativeLayout, в фрагменте который у нас открылся есть кнопка, по нажатию открывает следующий фрагмент и если из этого фрагмента нажать на какой либо другой из RelativeLayout заменяется фрагмент и меняется цвет данного RelativeLayout, но если нажать onBackPressed то вернётся тот предыдущий фрагмент, а цвет RelativeLayout не поменяется так как не было нажатия на нужный нам RelativeLayout. Понять с моих объяснений будет сложно, в гифке ниже показана проблема наглядно.

Не нужно мне предлагать заменить на BottomNavigationView, я прекрасно знаю что это такое, но он не выполняет те функции которые мне нужны введите сюда описание изображения

Активити с FragmentTabHost (MainActivity)

public class MainActivity extends AppCompatActivity{

    RelativeLayout home,status,order,profile;
    ImageView homeIcon,orderIcon,statusIcon,profileIcon,notiBaj;
    FragmentManager fragmentManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fragmentManager = getSupportFragmentManager();

        //layout
        home = findViewById(R.id.home);
        status = findViewById(R.id.status);
        order = findViewById(R.id.order);
        profile = findViewById(R.id.profile);

        //image view
        homeIcon = findViewById(R.id.home_icon);
        orderIcon = findViewById(R.id.order_icon);
        statusIcon = findViewById(R.id.status_icon);
        profileIcon = findViewById(R.id.profile_icon);

        notiBaj = findViewById(R.id.noti_baj);

        moveTabs();
        moveHome();
        changeHomeIcon();
    }

    private void moveTabs() {
        home.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                moveHome();
                changeHomeIcon();
            }
        });

        order.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                moveOrder();
                changeOrderIcon();
            }
        });

        status.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MoveStatus();
                changeStatusIcon();
            }
        });

        profile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                moveProfile();
                changeProfileIcon();
            }
        });
    }

    private void moveProfile() {
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        ProfileFragment frag = new ProfileFragment();
        fragmentTransaction.replace(R.id.fragment, frag,"profile");
        fragmentTransaction.addToBackStack(null).commit();
    }

    private void MoveStatus() {
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        NotificationFragment frag = new NotificationFragment();
        fragmentTransaction.replace(R.id.fragment, frag,"status");
        fragmentTransaction.addToBackStack(null).commit();
    }

    private void moveOrder() {
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        OrdersFragment frag = new OrdersFragment();
        fragmentTransaction.replace(R.id.fragment, frag,"order");
        fragmentTransaction.addToBackStack(null).commit();
    }

    private void moveHome() {
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        HomeFragment frag = new HomeFragment();
        fragmentTransaction.replace(R.id.fragment, frag,"home");
        fragmentTransaction.addToBackStack(null).commit();
    }

    private void changeHomeIcon() {
        homeIcon.setImageResource(R.drawable.home_click);
        orderIcon.setImageResource(R.drawable.order);
        statusIcon.setImageResource(R.drawable.noti);
        profileIcon.setImageResource(R.drawable.profile);
    }

    private void changeOrderIcon() {
        homeIcon.setImageResource(R.drawable.home);
        orderIcon.setImageResource(R.drawable.order_click);
        statusIcon.setImageResource(R.drawable.noti);
        profileIcon.setImageResource(R.drawable.profile);
    }

    private void changeStatusIcon() {
        homeIcon.setImageResource(R.drawable.home);
        orderIcon.setImageResource(R.drawable.order);
        statusIcon.setImageResource(R.drawable.noti_click);
        profileIcon.setImageResource(R.drawable.profile);
    }

    private void changeProfileIcon() {
        homeIcon.setImageResource(R.drawable.home);
        orderIcon.setImageResource(R.drawable.order);
        statusIcon.setImageResource(R.drawable.noti);
        profileIcon.setImageResource(R.drawable.profile_click);
    }
}

activity_main.xml

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

    <androidx.fragment.app.FragmentTabHost
        android:id="@+id/fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/liner"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginStart="0dp"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="0dp"
        android:layout_marginEnd="0dp"
        android:layout_marginRight="0dp"
        android:layout_marginBottom="0dp" />

    <LinearLayout
        android:id="@+id/liner"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="0dp"
        android:layout_marginLeft="0dp"
        android:layout_marginEnd="0dp"
        android:layout_marginRight="0dp"
        android:layout_marginBottom="0dp"
        android:background="@color/green"
        android:orientation="horizontal">

        <RelativeLayout
            android:id="@+id/home"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginTop="5sp"
            android:layout_weight="1"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/home_icon"
                android:layout_width="30sp"
                android:layout_height="30sp"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:src="@drawable/home" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/order"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginTop="5sp"
            android:layout_weight="1"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/order_icon"
                android:layout_width="30sp"
                android:layout_height="30sp"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:src="@drawable/order" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/status"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginTop="5sp"
            android:layout_weight="1"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/noti_baj"
                android:layout_width="15dp"
                android:layout_height="15dp"
                android:layout_alignParentTop="true"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_marginEnd="10sp"
                android:layout_marginRight="10sp"
                android:src="@drawable/noti_icon" />

            <ImageView
                android:id="@+id/status_icon"
                android:layout_width="30sp"
                android:layout_height="30sp"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:src="@drawable/noti" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/profile"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginTop="5sp"
            android:layout_weight="1"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/profile_icon"
                android:layout_width="30sp"
                android:layout_height="30sp"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:src="@drawable/profile" />
        </RelativeLayout>
    </LinearLayout>
</RelativeLayout>

Один из фрагментов в котором есть кнопка открывающая след фрагмент (HomeFragment)

public class HomeFragment extends Fragment {

    BlankFragment blankFragment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_home, container, false);
    }

    @Override
    public void onViewCreated(@NonNull final View view, @Nullable Bundle savedInstanceState) {

        blankFragment = new BlankFragment();

        Button btn = requireView().findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getActivity().getSupportFragmentManager().beginTransaction()
                        .replace(R.id.fragment, blankFragment, "findThisFragment")
                        .addToBackStack(null)
                        .commit();
            }
        });
    }
}

Ответы (0 шт):