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();
}
});
}
}