Перепиши этот код с учетом рекомендаций : package com.example.myapp_2.UI.view.activities;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.myapp_2.CartFragment;
import com.example.myapp_2.Data.model.database.Room.SQLITE.Note;
import com.example.myapp_2.ViewModel.ViewModels.NoteViewModel;
import com.example.myapp_2.R;
import com.example.myapp_2.UI.view.fragments.FirstFragment;
import com.example.myapp_2.UI.view.fragments.SecondFragment;
import com.example.myapp_2.UI.view.fragments.ThirdFragment;
import com.example.myapp_2.databinding.ActivityMainBinding;

import java.util.List;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private NoteViewModel noteViewModel;




    Button button1;
    Button button3;
   // private FirstFragment firstFragment = new FirstFragment();
    ActivityMainBinding binding;
    private  Button btn_fragment1,btn_fragment2,btn_fragment3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);




















        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        replaceFragment(new FirstFragment());


        binding.bottomNavigationView.setOnItemSelectedListener(item -> {
            switch(item.getItemId()){
                case R.id.cart_button:
                    replaceFragment(new CartFragment());
                    break;
                case  R.id.home:
                    replaceFragment(new FirstFragment());
                    break;
                case  R.id.profile:
                    replaceFragment(new SecondFragment());
                    break;
                case  R.id.settings:
                    replaceFragment(new ThirdFragment());
                    break;
            }
            return true;
        });

    getSupportFragmentManager().beginTransaction().replace(R.id.nav_container, new FirstFragment()).addToBackStack(null).commit();

    }







    @Override
    public void onClick(View view) {//2 способ

    }
    private void replaceFragment(Fragment fragment){
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.nav_container,fragment);
        String A = "HELLO";


        Bundle bundle = new Bundle();
        bundle.putInt("hello world", 4344);
        fragment.setArguments(bundle);


        fragmentTransaction.commit();

    }

}ля того чтобы заменить фрагмент FirstFragment на фрагмент CartFragment, нужно вызвать метод replace() на уровне активити, а не на уровне FirstFragment. Для этого:

1. В вашей разметке activity_main.xml убедитесь, что вы добавили контейнер для фрагментов в главной активити:

<FrameLayout
android:id=“@+id/fragment_container”
android:layout_width=“match_parent”
android:layout_height=“match_parent”/>

2. В методе openCartFragment() используйте replace() на уровне активити, чтобы заменить FirstFragment на CartFragment. Измененный код должен выглядеть примерно так:

private void openCartFragment() {
CartFragment cartFragment = new CartFragment();
FragmentTransaction transaction = getParentFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, cartFragment);
transaction.addToBackStack(null);
transaction.commit();
}

Обратите внимание, что у нас здесь используется метод getParentFragmentManager(), который позволяет получить менеджер фрагментов на уровне главной активити.

3. Для того, чтобы вернуться к FirstFragment из CartFragment, вы можете использовать метод popBackStack() в CartFragment. Этот метод удаляет верхнее состояние из стека возврата фрагментов, то есть текущий фрагмент CartFragment, и возвращает к предыдущему состоянию.

private void goBackToFirstFragment() {
getParentFragmentManager().popBackStack();
}

Вызовите этот метод, например, при нажатии на кнопку “Назад” в CartFragment.