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;
import de.dhbwloe.campusapp.nfcreader.NfcCardListener;
public class CampusApp extends FragmentActivity {
-
private boolean bSearchActive = false;
private CampusAppContext AppContext = null;
// 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);
// 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);
@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);
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.
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);
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;
// Container ID
private int iFragmentContainerId;
+ private int iNavigationViewId;
// Alle registrierte Fragmente mit Name
private ArrayList<NavPage> lNavigationPages = new ArrayList<NavPage>();
- public NavigationManager(CampusAppContext context, int fragmentContainer) {
+ public NavigationManager(CampusAppContext context, int fragmentContainer, int navigationView) {
AppContext = context;
iFragmentContainerId = fragmentContainer;
+ iNavigationViewId = navigationView;
oCurrentPage = null;
}
oCurrentPage = page;
oCurrentFragment = fragment;
+ updateNavigationHighlight();
+
transaction.commit();
}
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);
+ }
+
}