web-dev-qa-db-fra.com

problème de tiroir de navigation (ne pas afficher l'aperçu de la mise en page)

J'ai créé l'application et je souhaite utiliser le menu du tiroir de navigation, mais lorsque j'ai tenté de l'éditer dans le tiroir de navigation xml, le problème "Attendre la fin de la construction ..." s'est produit et je ne vois pas la mise en page à gauche de Studio Android

raconter

activity_main_drawer

layout_preview non trouvé ici

layout_preview

J'ai essayé cette soultion pour résoudre ce problème, mais malheureusement, cela ne fonctionnait pas pour moi

c'est 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/articles"
            Android:icon="@drawable/ic_menu_camera"
            Android:title="@string/articles" />
        <item
            Android:id="@+id/windows"
            Android:icon="@drawable/ic_menu_gallery"
            Android:title="@string/windows" />
        <item
            Android:id="@+id/linux"
            Android:icon="@drawable/ic_menu_slideshow"
            Android:title="@string/linux" />
        <item
            Android:id="@+id/miscellaneous_devices"
            Android:icon="@drawable/ic_menu_manage"
            Android:title="@string/miscellaneous_devices" />

        <item
            Android:id="@+id/information_security"
            Android:icon="@drawable/ic_menu_manage"
            Android:title="@string/information_security" />

        <item
            Android:id="@+id/facebook"
            Android:icon="@drawable/ic_menu_manage"
            Android:title="@string/facebook" />
    </group>

    <item Android:title="Communicate">
        <menu>
            <item
                Android:id="@+id/nav_share"
                Android:icon="@drawable/ic_menu_share"
                Android:title="Share" />
            <item
                Android:id="@+id/nav_send"
                Android:icon="@drawable/ic_menu_send"
                Android:title="Send" />
        </menu>
    </item>

</menu>

activity_main

    package www.pro.cs_is.com.procsis;

import Android.os.Bundle;
import Android.support.design.widget.FloatingActionButton;
import Android.support.design.widget.Snackbar;
import Android.view.View;
import Android.support.design.widget.NavigationView;
import Android.support.v4.view.GravityCompat;
import Android.support.v4.widget.DrawerLayout;
import Android.support.v7.app.ActionBarDrawerToggle;
import Android.support.v7.app.AppCompatActivity;
import Android.support.v7.widget.Toolbar;
import Android.view.Menu;
import Android.view.MenuItem;

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);



        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.miscellaneous_devices) {
            // Handle the camera action
        } else if (id == R.id.articles) {

        } else if (id == R.id.windows) {

        } else if (id == R.id.linux) {

        } else if (id == R.id.facebook) {

        } else if (id == R.id.information_security) {

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}

Update 1: après plusieurs tentatives, cela semble être un problème général après la mise à jour IDE vers la version 3.1.2, jusqu'à présent, il n'y a qu'un seul solution , ce que @mtak a suggéré bien qu'il soit similaire au menu principal options dans l'aperçu

11
Dr Mido

Supprimer la ligne 

tools:showIn="navigation_view"

à partir de activity_main_drawer.xml et à reconstruire. Cela a résolu le même problème pour moi . Je ne sais pas pourquoi !!!

Problème résolu dans AS 3.1.3 (8 juin 2018) et réapparu à nouveau (16 juin 2018) !!!

Nouvelle solution de contournement temporaire:

  1. Coupez la ligne tools:showIn="navigation_view" dans le fichier de menu.
  2. Fermez le fichier de menu. 
  3. Rouvrez-le et collez la ligne. 
  4. Allez à la conception et voir le menu comme il se doit.

Si vous fermez le fichier de menu et le rouvrez, le problème revient! Toujours pas de prévisualisation en texte.

15
user8959091

Vous pouvez essayer ce qui suit:

  • Exécuter Build puis essayer de voir l'aperçu à nouveau 

  • Fermez la mise en page actuelle, ouvrez-en une autre, puis rouvrez-la

4
user9025311

J'ai trouvé la solution. Supprimez ces deux lignes d’outils et fermez/rouvrez:

  • xmlns: tools = "http://schemas.Android.com/tools"

  • tools: showIn = "navigation_view"

0
Trí Phạm