From: pk910 Date: Thu, 10 Mar 2016 00:50:38 +0000 (+0100) Subject: Zuordnung von Navigationsitem zu Zielseite in CampusAppContext verschoben - somit... X-Git-Url: http://git.pk910.de/?p=DHBWCampusApp.git;a=commitdiff_plain;h=424a4c7c41d015392a4984ef0eab35de507da39c Zuordnung von Navigationsitem zu Zielseite in CampusAppContext verschoben - somit sind auch rückwirkende änderungen am Navigationsmenü durch den NavigationsManager möglich --- diff --git a/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java b/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java index 654a4dc..499a665 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java +++ b/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java @@ -17,6 +17,7 @@ package de.dhbwloe.campusapp; import android.content.Context; import android.content.Intent; +import android.content.res.TypedArray; import android.nfc.NfcAdapter; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; @@ -45,7 +46,6 @@ import java.util.Date; import de.dhbwloe.campusapp.nfcreader.NfcCardListener; public class CampusApp extends FragmentActivity { - private boolean bSearchActive = false; private CampusAppContext AppContext = null; @@ -72,7 +72,7 @@ public class CampusApp extends FragmentActivity { // Erstelle neuen AppContext, wenn keiner existiert AppContext = CampusAppContext.getInstance(); if(AppContext == null) - AppContext = new CampusAppContext(this, R.id.fragment_container); + AppContext = new CampusAppContext(this, R.id.fragment_container, R.id.nav_view); else AppContext.setMainActivity(this); @@ -155,30 +155,11 @@ public class CampusApp extends FragmentActivity { // Handle navigation view item clicks here. int id = item.getItemId(); - switch (id) { // Navigation Items from res/menu/activity_campus_app_drawer.xml - case R.id.nav_dashboard: - AppContext.getNavigationManager().navigatePage("Dashboard"); - break; - case R.id.nav_vorlesungsplan: - AppContext.getNavigationManager().navigatePage("Vorlesungsplan"); - break; - case R.id.nav_mensa: - AppContext.getNavigationManager().navigatePage("Mensa"); - break; - case R.id.nav_news: - AppContext.getNavigationManager().navigatePage("News"); + for(CampusAppContext.NavigationItem navitem : AppContext.NAVIGATION_TARGETS) { + if(navitem.navItemId == id) { + AppContext.getNavigationManager().navigatePage(navitem.navTarget); break; - case R.id.nav_settings: - AppContext.getNavigationManager().navigatePage("Settings"); - break; - case R.id.nav_wifi: - AppContext.getNavigationManager().navigatePage("WifiSettings"); - break; - case R.id.nav_impressum: - AppContext.getNavigationManager().navigatePage("Impressum"); - break; - default: - return false; + } } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); @@ -308,7 +289,9 @@ public class CampusApp extends FragmentActivity { @Override public void onResume() { if(AppContext == null) - AppContext = new CampusAppContext(this, R.id.fragment_container); + AppContext = CampusAppContext.getInstance(); + if(AppContext == null) + AppContext = new CampusAppContext(this, R.id.fragment_container, R.id.nav_view); else AppContext.setMainActivity(this); diff --git a/app/src/main/java/de/dhbwloe/campusapp/CampusAppContext.java b/app/src/main/java/de/dhbwloe/campusapp/CampusAppContext.java index 80db8ac..99a1d17 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/CampusAppContext.java +++ b/app/src/main/java/de/dhbwloe/campusapp/CampusAppContext.java @@ -62,6 +62,46 @@ public class CampusAppContext { this.fragementType = type; } } + public class NavigationItem { + int navItemId; + String navTarget; + }; + + public final NavigationItem[] NAVIGATION_TARGETS = new NavigationItem[] { + new NavigationItem() {{ + navItemId = R.id.nav_dashboard; + navTarget = "Dashboard"; + }}, + new NavigationItem() {{ + navItemId = R.id.nav_vorlesungsplan; + navTarget = "Vorlesungsplan"; + }}, + new NavigationItem() {{ + navItemId = R.id.nav_mensa; + navTarget = "Mensa"; + }}, + new NavigationItem() {{ + navItemId = R.id.nav_mensa; + navTarget = "Mensa"; + }}, + new NavigationItem() {{ + navItemId = R.id.nav_news; + navTarget = "News"; + }}, + new NavigationItem() {{ + navItemId = R.id.nav_settings; + navTarget = "Settings"; + }}, + new NavigationItem() {{ + navItemId = R.id.nav_wifi; + navTarget = "WifiSettings"; + }}, + new NavigationItem() {{ + navItemId = R.id.nav_impressum; + navTarget = "Impressum"; + }}, + + }; public static final String APPVERSION = "0.1.3 (beta)"; private final AppPage[] PAGES = { // Hier müssen alle Fragmente, die auf der Activity angezeigt werden sollen eingetragen werden. @@ -92,12 +132,12 @@ public class CampusAppContext { private NfcCardListener oNfcCardListener; private Bundle oContextVariables; - public CampusAppContext(CampusApp mainActivity, int fragmentContainerId) { + public CampusAppContext(CampusApp mainActivity, int fragmentContainerId, int navigationViewId) { final CampusAppContext AppContext = this; instance = this; oMainActivity = mainActivity; oContextVariables = new Bundle(); - oNavigationManager = new NavigationManager(this, fragmentContainerId); + oNavigationManager = new NavigationManager(this, fragmentContainerId, navigationViewId); oDatabaseManager = new DatabaseManager(this); oNfcCardListener = new NfcCardListener(this); diff --git a/app/src/main/java/de/dhbwloe/campusapp/NavigationManager.java b/app/src/main/java/de/dhbwloe/campusapp/NavigationManager.java index ed339dd..073bf19 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/NavigationManager.java +++ b/app/src/main/java/de/dhbwloe/campusapp/NavigationManager.java @@ -16,6 +16,7 @@ package de.dhbwloe.campusapp; import android.os.Bundle; +import android.support.design.widget.NavigationView; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; @@ -53,13 +54,15 @@ public class NavigationManager { // Container ID private int iFragmentContainerId; + private int iNavigationViewId; // Alle registrierte Fragmente mit Name private ArrayList lNavigationPages = new ArrayList(); - public NavigationManager(CampusAppContext context, int fragmentContainer) { + public NavigationManager(CampusAppContext context, int fragmentContainer, int navigationView) { AppContext = context; iFragmentContainerId = fragmentContainer; + iNavigationViewId = navigationView; oCurrentPage = null; } @@ -152,6 +155,8 @@ public class NavigationManager { oCurrentPage = page; oCurrentFragment = fragment; + updateNavigationHighlight(); + transaction.commit(); } @@ -225,4 +230,22 @@ public class NavigationManager { return closeDialog(); } + private void updateNavigationHighlight() { + NavigationView navigationView = (NavigationView) AppContext.getMainActivity().findViewById(iNavigationViewId); + + if(oCurrentPage == null) + return; + + int activeItemId = 0; + for(CampusAppContext.NavigationItem navitem : AppContext.NAVIGATION_TARGETS) { + if(oCurrentPage.name.equalsIgnoreCase(navitem.navTarget)) { + activeItemId = navitem.navItemId; + } + } + if(activeItemId == 0) + return; + + navigationView.setCheckedItem(activeItemId); + } + }