Al hacer clic sobre el punto de control de navegación hace fragmentos no abiertas

Ling:

Quiero usar el valor por defecto Actividad panel lateral de navegación de Android Studio (v. 3.5). Después de la creación de esta actividad predeterminada (Nuevo proyecto -> panel de navegación de actividad) que comenzó este templete. Si hago clic en uno de los iconos del menú de navegación (por ejemplo, “Galería”) el fragmento actual del NavHost no cambia. Según tengo entendido la siguiente sección: https://developer.android.com/guide/navigation/navigation-ui#Tie-navdrawer la NavController debe navegar hasta el destino elegido si el identificador del elemento de menú coincide con el identificador del destino, pero esto no funciona.

Después de investigar todo el día, me encontré con la siguiente pregunta en StackOverflow: NavigationView evento Click que es muy similar, pero en realidad no contestadas. El siguiente punto interesante es que si uso el botón de navegación Actividad esta plantilla parece funcionar, probablemente, y realmente no puedo averiguar las diferencias con respecto al panel lateral de navegación de plantilla Actividad. También encontré varias otras soluciones que trabajaban para templetes mayores. No puedo entender por qué hay un templete estándar que parece no trabajo y por eso tampoco hay ejemplos y tutoriales adecuados proporcionados a través de https://developer.android.com/ .

mobile_navigation.xml (gráfico de navegación):

<?xml version="1.0" encoding="utf-8"?>
<navigation 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/mobile_navigation"
    app:startDestination="@+id/nav_home">
    ... >

    ...

    <fragment
        android:id="@+id/nav_tools"
        android:name="ktu.workout_planner.ui.tools.ToolsFragment"
        android:label="@string/menu_tools"
        tools:layout="@layout/fragment_tools" />
</navigation>

activity_main_drawer.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">

    <group android:checkableBehavior="single">
...
        <item
            android:id="@+id/nav_tools"
            android:icon="@drawable/ic_menu_manage"
            android:title="@string/menu_tools" />
    </group>

Como se puede ver el identificador del elemento coincide con el ID del fragmento.

onCreate función de MainActivity:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,
                R.id.nav_tools)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
    }

¿Me he perdido algo qué hacer clic en el elemento del panel lateral de navegación no abre los fragmentos correspondientes?

Ling:

Respuesta de Mike M. (ver comentario):

Hay un problema en el punto 3.5 que está causando XML para ser reorganizado de manera incorrecta. En el activity_maindiseño, asegúrese de que el <NavigationView>aparezca en último lugar dentro de la <DrawerLayout>. Es decir, moverla a después de que el <include>allí, si usted todavía tiene la configuración por defecto. A continuación, echar un vistazo a este post para ver cómo detener Android Estudio de reordenación de sus Views por el estilo.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=336427&siteId=1
Recomendado
Clasificación