Work on a menu with items within a NavigationView on Android

1

Good afternoon,

I would like to raise a problem that I can not find a solution for in Android programming.

It turns out that I have a sliding menu implemented under two structures, a header and a listMenu in my view. I access the header perfectly under the following line of code:

navView = (NavigationView) findViewById(R.id.nav_view);
View navHeader = navView.getHeaderView(0);
TextView usuario_header = (TextView) navHeader.findViewById(R.id.username);
TextView correo_header = (TextView) navHeader.findViewById(R.id.emailNavegador);

By doing this, I get a reference to the header and I can modify two TextView, which in this case is the name of the user and the associated mail.

My problem is when working with the menu, since it is not controlled when you are pressing one item or another and after pressing, load a layout associated with it.

I put the code that implements my sliding menu and an image that illustrates that code.

Layout of the activity_principal.

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".PrincipalActivity">
<!-- Contenido Principal -->
<include layout="@layout/main_content" />
<!-- Menú Deslizante -->
<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header"
    app:menu="@menu/nav_menu" /></android.support.v4.widget.DrawerLayout>

Layout of main_content

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<RelativeLayout
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TextView
        android:text="Holis"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginStart="148dp"
        android:layout_marginTop="58dp"
        android:id="@+id/textMain" />
</RelativeLayout></LinearLayout>

Layout of nav_header

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/header_height"
android:background="@drawable/material_background3"
android:gravity="bottom"
android:orientation="vertical"
android:padding="@dimen/header_left_padding"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:id="@+id/header">
<!-- Imagen de perfil -->
<de.hdodenhof.circleimageview.CircleImageView
    android:id="@+id/circle_image"
    android:layout_width="@dimen/perfil_image_size"
    android:layout_height="@dimen/perfil_image_size"
    android:layout_marginBottom="16dp"
    android:scaleType="centerCrop"
    android:src="@drawable/pacoalba"
    app:border_color="@android:color/white"
    app:border_width="1dp" />
<!-- Nombre de Usuario -->
<TextView
    android:id="@+id/username"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
    android:textStyle="bold" />
<!-- Correo de la cuenta -->
<TextView
    android:id="@+id/emailNavegador"
    style="@style/Widget.AppCompat.Spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1" /></LinearLayout>

Menu

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
    <item
        android:id="@+id/nav_noticias"
        android:checked="true"
        android:icon="@drawable/ic_libro"
        android:title="@string/noticias_item" />
    <item
        android:id="@+id/nav_sesion"
        android:icon="@drawable/ic_sesion"
        android:title="@string/sesion_item" />
    <item
        android:id="@+id/nav_mapa"
        android:icon="@drawable/ic_mapa"
        android:title="@string/mapa_item" />
    <item
        android:id="@+id/nav_rutas"
        android:icon="@drawable/ic_rutas"
        android:title="@string/rutas_item" />
    <item
        android:id="@+id/nav_eventos"
        android:icon="@drawable/ic_eventos"
        android:title="@string/eventos_item" />
    <item
        android:id="@+id/nav_alertas"
        android:icon="@drawable/ic_alertas"
        android:title="@string/alertas_item" />
    <item
        android:id="@+id/nav_multimedia"
        android:icon="@drawable/ic_multimedia"
        android:title="@string/multimedia_item" />
    <!-- Sección de configuración -->
    <item
        android:id="@+id/configuration_section"
        android:title="@string/configuracion_item">
        <menu>
            <item
                android:id="@+id/nav_log_out"
                android:icon="@android:drawable/ic_lock_power_off"
                android:title="@string/log_out_item" />
        </menu>
    </item>
</group>

Here I attach the image.

Thank you very much for everything.

    
asked by Yise Garcia 26.10.2016 в 18:14
source

1 answer

1

According to what I understand, is that you need to implement the NavigationView listener, for this you must overwrite the method:

 @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            // Handle navigation view item clicks here.
            int id = item.getItemId();
            switch(id){
            case R.id.nav_noticias:
            //TODO Mostrar Activity de noticias
            return true;
            case R.id.nav_sesion:
            //TODO Mostrar Activity de sesion
            return true;
            }

            mDrawerLayout.closeDrawer(GravityCompat.START);
            return true;
        }

I hope this is what you need, and if not, please specify more in depth the problem.

Salu2

    
answered by 26.10.2016 в 18:47