ponawigujmy troszkę – widget.Toolbar – #0B

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:


<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:


<include
android:id="@+id/main_activity_toolbar"
layout="@layout/main_app_toolbar" />

OK, xmle opanowane, czas zainicjować toolbary w MainActivity, w metodzie onCreate dorzucamy


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:

menu.png

Wracamy do MainActivity.java i czas dodać funkcje odpowiedzialne za wyświetlenie i obsługę kliknięcia przez użytkownika:


@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.meal_list_item:
Intent intent = new Intent(this, MealListActivity.class);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}

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


<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:


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);
}
}

wp-1490625914700.png

Kolejny mały kamyczek do aplikacji 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

This site uses Akismet to reduce spam. Learn how your comment data is processed.