Mamy listę obiadów – jeden wielki mock póki co. Mamy listę posiłków – tu już lepiej – ma podłączenie do bazy i nawet się wyświetlają prosto z bazy. Ale nie mamy przejścia pomiędzy nimi. Trzeba to naprawić. Wykorzystajmy do tego toolbar.
Po pierwsze w AndroidManifest.xml wyłączamy domyślny ActionBar wrzucając do sekcji application linijkę:
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
Chcę mieć layout toolbara do wielokrotnego wykorzystania, więc w katalogu /res/layout tworzę sobie nowy xml:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:app="http://schemas.android.com/apk/res-auto" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="match_parent" | |
android:layout_height="?attr/actionBarSize" | |
android:background="?attr/colorPrimary" | |
android:elevation="4dp" | |
android:theme="@style/ThemeOverlay.AppCompat.ActionBar" | |
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" | |
tools:showIn="@layout/activity_main" /> |
i załączam go do xmla z głównego ekranu:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<include | |
android:id="@+id/main_activity_toolbar" | |
layout="@layout/main_app_toolbar" /> |
OK, xmle opanowane, czas zainicjować toolbary w MainActivity, w metodzie onCreate dorzucamy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protected void onCreate(Bundle savedInstanceState) { | |
/*…*/ | |
Toolbar myToolbar = (Toolbar) findViewById(R.id.main_activity_toolbar); | |
setSupportActionBar(myToolbar); | |
} |
Do menu chcemy dołożyć link, który umożliwi nam przeniesienie się do listy posiłków. No to wracamy do xmli. Tworzymy sobie nowy plik w /res/menu i umieszczamy tam menu i pierwszy link:
Wracamy do MainActivity.java i czas dodać funkcje odpowiedzialne za wyświetlenie i obsługę kliknięcia przez użytkownika:
W metodzie onCreateOptionsMenu robimy inflate na naszym xmlu. To da nam tyle, że aplikacja będzie wiedzieć, jakie elementy i o jakich id mamy w naszym xmlu. Przyda nam się to w metodzie onOptionsItemSelected gdzie mamy switch-case [sic!] po Id elementów. Jeśli dopasujemy kliknięty element do id, to odpalamy activity z ekranem MealList.
Czas na drugi ekran. Dołączamy toolbar do activity_meal_list.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<include | |
layout="@layout/main_app_toolbar" | |
android:id="@+id/meal_list_toolbar" /> |
Z MealListActivity chcemy mieć możliwość powrotu do ekranu głównego. Zainicjujmy toolbar i zróbmy powrót:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MealListActivity extends AppCompatActivity { | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
//…// | |
Toolbar myToolbar = (Toolbar) findViewById(R.id.meal_list_toolbar); | |
setSupportActionBar(myToolbar); | |
ActionBar ab = getSupportActionBar(); | |
ab.setDisplayHomeAsUpEnabled(true); | |
} | |
} |
Kolejny mały kamyczek do aplikacji 🙂