ActivityGroup i LocalActivityManager
Autobuser jest prawie skończony, więc mam chwilę, żeby podzielić się rozwiązaniem kolejnego problemu.
Żeby interfejs był spójny i czytelny chcieliśmy, żeby użytkowik mógł w każdej chwili przejść do Ulubionych, Szukania lub Połączeń. Najprostszym wyjściem byłoby tworzenie takiego samego menu w każdym Activity::onCreateOptionsMenu, ale to spowodowałoby rosnącą w nieskończoność „ścieżkę”uruchomionych activities (każde kolejne wywołanie przesłaniałoby aktualne i przycisk „Wstecz” moznaby klikać w nieskończonosć).
Postanowiłem samemu obsługiwać przycisk „Wstecz” i i korzystać cały czas z jednej klasy do tworzenia menu.
Klasa główna dziedziczy po ActivityGroup i nadpisuje onCreateOptionsMenu, w onOptionsItemSelected LocalActivityManager zamyka chodzące aktualnie Activity i uruchamia kolejne w tym samym oknie.
Może trochę kodu, żeby rozjaśnić…
@Override public boolean onCreateOptionsMenu(Menu menu) { (new MenuInflater(this)).inflate(R.menu.mainmenu, menu); return true; } public boolean onOptionsItemSelected(MenuItem item) { //super.onOptionsItemSelected(item); // Find which menu item has been selected try { activities.clear(); activities.add(new Intent(Autobuser.this, Favourites.class)); mLocalActivityManager.removeAllActivities(); switch (item.getItemId()) { // Check for each known menu item case (R.id.mainmenu_favorites): activities.clear(); startActivity(new Intent(Autobuser.this, Favourites.class)); return true; [...] } } } public void startActivity(Intent i) { activities.add(i); setContentView(mLocalActivityManager.startActivity(i.toURI(), i).getDecorView()); }
Komentarze (1)
Witam, właśnie szukam czegoś na temat ActivityGroup i jak tego używać, tu widzę ładny przykład tylko trochę trudno mi zrozumieć, bo za krótki ;P Masz może jakiś tekst na temat ActivityGroup lub przykład zastosowania ? Z góry dziękuje za odpowiedź !