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());
}
  • Wykop
  • Facebook
  • Twitter

1 Komentarz

  1. rosek on Sierpień 6th, 2009

    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ź !

Twój komentarz

Tagi

android autobuser cron google java linux python sieć sms test

linki