I am trying to use BottomNavigationView to move between 3 Fragments, and I made it work but I have a small issue.
I have 2 fragments and 1 activity, and this activity has the code moving between fragments in it.
When I press buttons on bottom navigation bar, I can see the image of bottom bar changes.
And in one fragment I made a button that will move to the other fragment when pressed, and it works well.
The issue I am facing is that when I press the button to move to the other fragment, the bottom bar image does not change.
Here is my code for the main activity:
public class MainActivity extends AppCompatActivity {
    public static Bundle bundle = new Bundle();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation);
        bottomNav.setOnNavigationItemSelectedListener(navListener);
        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit();
        }
    private BottomNavigationView.OnNavigationItemSelectedListener navListener =
        new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                Fragment selectedFragment = null;
                switch (item.getItemId()) {
                    case R.id.nav_home:
                        selectedFragment = new HomeFragment();
                        break;
                    case R.id.nav_announcement:
                        selectedFragment = new AnnouncementFragment();
                        break;
                }
                 getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        selectedFragment).commit();
                return true;
            }
        };
}
And this is the code of the fragment that has the button:
public class HomeFragment extends Fragment {
    Calendar calendar = Calendar.getInstance();
    Button buttonTrack;
    int year, month, day;
    public HomeFragment() {
        //Required empty public constructor
    }
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
                         Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home, container, false);
        this.year = calendar.get(Calendar.YEAR);
        this.month = calendar.get(Calendar.MONTH) + 1;
        this.day = calendar.get(Calendar.DAY_OF_MONTH);
        buttonTrack = view.findViewById(R.id.btn_track);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.getDefault());
        final String currentTime = simpleDateFormat.format(new Date());
        buttonTrack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MainActivity.bundle.putString("time", currentTime);
                getFragmentManager().beginTransaction().replace(R.id.fragment_container, new AnnouncementFragment()).commit();
            }
        });
        return view;
    }
}
And the other fragment:
public class AnnouncementFragment extends Fragment {
    String timeFromBundle;
    TextView announcementHere, timeView;
    public AnnouncementFragment() {
    // Required empty public constructor
        }
    @SuppressLint("NewApi")
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_announcement, container, false);
        timeFromBundle = MainActivity.bundle.getString("time");
        announcementHere = view.findViewById(R.id.announcement_here);
        timeView = view.findViewById(R.id.time_view);
        timeView.setText(timeFromBundle);
        return view;
    }
}
Can anyone tell me when I should fix to make it changes the image in bottom bar even when I move to the other fragment by pressing a button inside a fragment? Thanks in advance!
In your HomeFragment inside your button click listener instead of this line 
getFragmentManager().beginTransaction().replace(R.id.fragment_container, new AnnouncementFragment()).commit();
use this
((BottomNavigationView)getActivity().findViewById(R.id.bottom_navigation)).setSelectedItemId(R.id.nav_announcement);
It will call your BottomNavigationView.OnNavigationItemSelectedListener in your activity.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With