Cześć!
Chciałbym zaimplementować w swojej aplikacji kilka "pod-menu" (nie wiem jak to lepiej określić). Rzecz polega na tym, że gdy wybiorę jakąś zakładkę z głównego menu znajdującego się po lewej stronie górnej belki to chciałbym aby pod-menu znajdujące się po prawej stronie belki zmieniało się wraz z zakładką. Wydaje mi się, że większość pracy mam już zrobionej, nie mniej nie wszystko działa tak jak bym sobie tego życzył.
Zrobiłem tak:
1. W głównym pliku MainActivity.java utworzyłem zmienną (int navItemIndex = 0), która wedle założenia ma przechowywać informację o obecnie wyświetlanym fragmencie.
2. Metodę odpowiadającą za zmianę pod-menu zmodyfikowałem w taki sposób, że obecnie ma postać
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
if(navItemIndex == 0) {
getMenuInflater().inflate(R.menu.group_menu, menu);
}
if(navItemIndex == 1) {
getMenuInflater().inflate(R.menu.account_menu, menu);
}
if(navItemIndex == 2) {
getMenuInflater().inflate(R.menu.calculator_menu, menu);
}
return true;
}
3. natomiast metoda odpowiadająca za przełączanie fragmentów wygląda następująco
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_group) {
navItemIndex = 0;
setTitle("Grupa");
Group group = new Group();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment, group).commit();
} else if (id == R.id.nav_account) {
navItemIndex = 1;
setTitle("Konto");
Account account = new Account();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment, account).commit();
} else if (id == R.id.nav_calculator) {
navItemIndex = 2;
setTitle("Kalkulator");
Calculator calculator = new Calculator();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment, calculator).commit();
} else if (id == R.id.nav_settings) {
navItemIndex = 3;
setTitle("Ustawienia aplikacji");
Settings settings = new Settings();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment, settings).commit();
} else if (id == R.id.nav_feedback) {
navItemIndex = 4;
setTitle("Feedback");
Feedback feedback = new Feedback();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.fragment, feedback).commit();
} else if (id == R.id.nav_logout) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
Chciałem aby wszystko działało w taki sposób, że gdy z głównego menu wybieram "nav_account" to wartość zmiennej navItemIndex z domyślnego 0 zmienia sie na 1 dzięki czemu gdy wyświetlony zostanie fragment "Account" to pod-menu na belce również się zmieni.
W tym miejscu pojawia się problem, mianowicie gdy po uruchomieniu aplikacji wybieram z głównego menu pierwszą, drugą lub trzecią zakładkę to kolejne fragmenty się zmieniają natomiast wartość zmiennej navItemIndex już nie, przez co cały czas mam tylko jedno pod-menu wszędzie 🙁
-------------
Co zrobić aby wybierając z menu jakąś zakładkę, zmienić też wartość zmiennej co spowoduje zmianę pod-menu??