при создании активити происходит выбор какой фрагмент отобразить на основе Extras в intent, и при выборе не первого фрагмента, а второго или третьего у BottomNavigation все равно выбранным остается первый значок соответствующий первому фрагменту. Помогите пожалуйста как их синхронизировать?
Код как создаётся фрагмент:
private BottomNavigationView.OnNavigationItemSelectedListener navListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
if (currentPageId == item.getItemId()) {
return false;
} else {
currentPageId = item.getItemId();
switch (item.getItemId()) {
case R.id.full_info:
selectedFragment = new FullFragment();
break;
case R.id.detailed_info:
selectedFragment = new DetailedFragment();
break;
case R.id.manage_scan:
selectedFragment = new ConnectionFragment();
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, selectedFragment).commit();
return true;
}
}
};
Код как выбирается какой фрагмент поставить:
if(savedInstanceState == null && whichFragment.equals("may_you_please_set_detailed_fragment")) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
DetailedFragment fragment = new DetailedFragment();
transaction.replace(R.id.fragment_container, fragment);
transaction.commit();
} else {
if(savedInstanceState == null) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
ConnectionFragment fragment = new ConnectionFragment();
transaction.replace(R.id.fragment_container, fragment);
transaction.commit();
}
}
При старте программы вам кроме выбора фрагмента так же нужно программно отмечать и пункт нижнего меню, делается это так:
BottomNavigationView bottomNavigationView;
дальше в функции onCreate()
:
bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavigationView);
bottomNavigationView.setOnNavigationItemSelectedListener(myNavigationItemListener);
и при выборе нужного фрагмента отмечайте нужный пункт меню:
bottomNavigationView.setSelectedItemId(R.id.my_menu_item_id);
и тут пишете программный выбор пункта меню:
if(savedInstanceState == null && whichFragment.equals("may_you_please_set_detailed_fragment")) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
DetailedFragment fragment = new DetailedFragment();
transaction.replace(R.id.fragment_container, fragment);
transaction.commit();
bottomNavigationView.setSelectedItemId(R.id.my_menu_item_id); // тут отмечайте нужный вам пункт меню по id
} else {
if(savedInstanceState == null) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
ConnectionFragment fragment = new ConnectionFragment();
transaction.replace(R.id.fragment_container, fragment);
transaction.commit();
bottomNavigationView.setSelectedItemId(R.id.my_menu_item_id); // тут отмечайте нужный вам пункт меню по id
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть небольшая проблема - нужно найти индекс элемента в стринговом массиве с помощью IndexOfВот кусок моего кода:
не могу создать буфер кадра в своем приложении для андроид на javaПожалуйста, можете сказать, что я делаю не так
Хочется из входящих писем выбирать вложения типа doc, docx (возможно еще какие-то файлы документов)Написал метод, но он только лишь создает файлы...