Как перейти к определенному пункту меню по умолчанию для нижней панели навигации?

#java #android #android-studio #android-layout #android-fragments

Вопрос:

Я создаю приложение с нижней панелью навигации, с которой app:menu="@menu/bottom_menu" связан файл. Как только действие начнется по умолчанию, будет выбран первый пункт меню (например, значок «Главная»). Что я должен сделать, чтобы изменить выбранный пункт меню, как только начнется действие?

Я работаю с SharedPreferences. Фрагменты загружаются правильно, но соответствующие значки для фрагментов не загружаются. По умолчанию значок главного фрагмента фокусируется в нижней панели навигации.

 public class HomeActivity extends AppCompatActivity {

    BottomNavigationView bottomNavigationView;
    DatabaseReference reference;
    FirebaseUser user;
    public static final String MY_PREFS_NAME = "Dock";
    SharedPreferences.Editor editor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        user = FirebaseAuth.getInstance().getCurrentUser();
        editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();



        bottomNavigationView = findViewById(R.id.bottomNavigationView);
        if (savedInstanceState == null){

            SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
            int idName = prefs.getInt("idName", 1);

            if (idName == 1){
                handleFrames(new ChatFragment() );
            }
            if (idName == 2){
                handleFrames(new GroupFragment() );
            }
            if (idName == 3){
                handleFrames(new SearchFragment() );
            }
            if (idName == 4){
                handleFrames(new FriendsFragment() );
            }
            if (idName == 5){
                handleFrames(new SettingsFragment() );
            }


        }
        handleOnClickListner();
    }

    private void handleFrames(Fragment fragment) {
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        // fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
        fragmentTransaction.replace(R.id.fragment_holder, fragment);
        fragmentTransaction.commit();
    }

    private void handleOnClickListner(){
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.chat:
                        handleFrames(new ChatFragment());
                        editor.putInt("idName", 1);
                        editor.apply();
                        break;
                    case R.id.groups:
                        handleFrames(new GroupFragment());
                        editor.putInt("idName", 2);
                        editor.apply();
                        break;
                    case R.id.status:
                        handleFrames(new SearchFragment());
                        editor.putInt("idName", 3);
                        editor.apply();
                        break;
                    case R.id.friends:
                        handleFrames(new FriendsFragment());
                        editor.putInt("idName", 4);
                        editor.apply();
                        break;
                    case R.id.setting:
                        handleFrames(new SettingsFragment());
                        editor.putInt("idName", 5);
                        editor.apply();
                        break;
                }
                return true;
            }
        });
    }
 

Ответ №1:

Попробуйте это bottomNavigationView.setSelectedItemId(resId);

С помощью этого вы можете настроить выбранный элемент в самом скрипте в onCreate или любой другой функции.