ящик навигации неправильно проверен, когда я меняю действие

У меня есть навигационный ящик в моем приложении с различными действиями. Все идет хорошо, но у меня есть большая проблема. Когда я хочу изменить активность в навигационном ящике, элемент не отмечен или отмечен неправильно. Например, я хочу перейти к действию B, когда я открываю навигационный ящик, он не выбран или выбран другой элемент. Здесь есть несколько кодов: элементы:
`

<item
    android:id="@+id/nav_home"
    android:icon="@drawable/ic_home"
    android:title="@string/Button_home"/>

<group android:checkableBehavior="single"
    android:id="@+id/anonimous_group">

    <item
        android:id="@+id/nav_registrati"
        android:icon="@mipmap/ic_create_black_24dp"
        android:title="@string/registrati"/>
    <item
        android:id="@+id/nav_login"
        android:icon="@mipmap/ic_filter_tilt_shift_black_24dp"
        android:title="@string/accedi"/>
</group>

<group android:checkableBehavior="single"
    android:id="@+id/logged_group"
    >
    <item
        android:id="@+id/nav_profilo"
        android:icon="@drawable/id_profile"
        android:title="@string/Profilo"/>
    <item
        android:id="@+id/nav_notifiche"
        android:icon="@drawable/ic_notifications"
        android:title="@string/Notifiche"/>
    <item
        android:id="@+id/nav_mie_recensioni"
        android:icon="@drawable/ic_review"
        android:title="@string/mie_recensioni"/>
    <item
        android:id="@+id/nav_persone_seguo"
        android:icon="@drawable/ic_person"
        android:title="@string/persone_seguo"/>
    <item
        android:id="@+id/nav_oggetti_seguo"
        android:icon="@drawable/ic_favorite"
        android:title="@string/oggetti_seguo"/>
    <item
        android:id="@+id/nav_inserisci_recensione"
        android:icon="@drawable/ic_review"
        android:title="@string/inserisci_recensione"/>
    <item
        android:id="@+id/nav_settings"
        android:icon="@drawable/ic_build"
        android:title="@string/action_settings"/>
    <item
        android:id="@+id/nav_esci"
        android:icon="@mipmap/ic_exit_to_app_black_24dp"
        android:title="@string/exit"/>
</group>

<item
    android:id="@+id/nav_Assistenza"
    android:icon="@drawable/ic_help"
    android:title="@string/Assistenza"/>

И суперактивность:

  @Override
public boolean onNavigationItemSelected(MenuItem item) {
    Log.i("Successo","SOno entrato"+item.getItemId());
    // now set clicked menu item to checked
    Intent intent;
    switch(item.getItemId()) {
        case R.id.nav_home:
            intent = new Intent(ctx, A10_HomePage.class);
            break;
        case R.id.nav_registrati:
            intent = new Intent(ctx, A1_LoginIniziale.class);
            editor.putString("previous", "REG").apply();
            break;
        case R.id.nav_login:
            intent = new Intent(ctx, A1_LoginIniziale.class);
            editor.putString("previous", "LOGIN").apply();
            break;
        case R.id.nav_notifiche:
            intent = new Intent(ctx, A14_Notifiche.class);
            break;
        case R.id.nav_mie_recensioni:
            intent = new Intent(ctx, A23_MieRecensioni.class);
            break;
        case R.id.nav_oggetti_seguo:
            intent = new Intent(ctx, A22_OggettiSeguiti.class);
            break;
        case R.id.nav_persone_seguo:
            intent = new Intent(ctx, A19_PersoneSeguite.class);
            break;
        case R.id.nav_inserisci_recensione:
            intent = new Intent(ctx, A15_InserisciRecensione.class);
            break;
        case R.id.nav_settings:
            intent = new Intent(ctx, A6_Impostazioni.class);
            break;
        case R.id.nav_Assistenza:
            intent = new Intent(ctx, A35_Assistenza.class);
            break;
        case R.id.nav_esci:
            removeUser();
            intent = new Intent(ctx, A1_LoginIniziale.class);
            break;
        case R.id.nav_profilo:
            intent = new Intent(ctx, A7_ProfiloPrivato.class);
            break;
        default:
            intent = new Intent(ctx, A10_HomePage.class);
            break;
    }
    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivity(intent);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

Макет:

<android.support.design.widget.NavigationView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:itemIconTint="@color/drawer_item_text"
        app:itemTextColor="@color/drawer_item_text"
        app:headerLayout="@layout/nav_header"/>

person CoffeAbuser    schedule 30.06.2017    source источник


Ответы (2)


Я также нашел эту проблему, и я решаю ее, используя

onNavigationItemSelected(navView.getMenu().getItem(R.id.nav_‌​профиль));

onNavigationItemSelected(navView.getMenu().getItem(0)); используйте это для выбора первого элемента по умолчанию.

person Nimisha V    schedule 30.06.2017
comment
Внутренняя активность с идентификатором каждого элемента навигации, т.е. nav_home , nav_mie_recensioni - person Nimisha V; 30.06.2017
comment
для пользовательской навигации, я думаю, это решит вашу проблему github.com/mikepenz/MaterialDrawer - person Nimisha V; 03.07.2017

Добавьте этот рисунок

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#FFFFFF" android:state_checked="true" />
    <item android:color="#7D7D7F" android:state_checked="false" android:state_enabled="false" />
    <item android:color="#7D7D7F" android:state_enabled="false" />
    <item android:color="#7D7D7F" />
</selector>

а затем используйте этот рисунок для вашего текстового представления

<android.support.design.widget.NavigationView
        xmlns:android="``http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:itemIconTint="@color/drawer_item_text"
        app:itemTextColor="@color/navigation_text_color"
        app:headerLayout="@layout/nav_header"

Вы можете сделать то же самое для значка

person Nivil Boban    schedule 30.06.2017