#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 или любой другой функции.