web-dev-qa-db-fra.com

L'icône du tiroir de navigation (ic_drawer) ne s'affiche pas

J'implémente un tiroir de navigation pour mon application. Maintenant, cela fonctionne parfaitement, sauf pour un petit problème. Lorsque je configure l'icône de tiroir de navigation (ic_drawer) pour remplacer l'icône de curseur "HomeAsUp" normale, je reçois toujours la flèche. L'icône Nav Drawer ne s'affiche pas. J'ai implémenté toutes les méthodes présentes sur le site Web des développeurs Android. Mais cela ne semble pas fonctionner.

Voici mon code:

DrawerLayout mDrawerLayout;
FrameLayout leftDrawer, rightDrawer, contentFrame;
ActionBarDrawerToggle mDrawerToggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    initializeViews();
}

private void initializeViews() {
    // TODO Auto-generated method stub
    mDrawerLayout = (DrawerLayout) findViewById(R.id.mDrawerLayout);
    mDrawerToggle = new ActionBarDrawerToggle(this,
            mDrawerLayout, R.drawable.ic_drawer,
            R.string.drawer_open_content_desc,
            R.string.drawer_close_content_desc);

    getActionBar().setHomeButtonEnabled(true);
    getActionBar().setDisplayHomeAsUpEnabled(true);

    mDrawerLayout.setDrawerListener(mDrawerToggle);

    leftDrawer = (FrameLayout) findViewById(R.id.drawerLeft_frame);
    rightDrawer = (FrameLayout) findViewById(R.id.drawerRight_frame);
    contentFrame = (FrameLayout) findViewById(R.id.content_frame);
}


@Override
protected void onPostCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
    mDrawerToggle.onConfigurationChanged(newConfig);
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
26
Adifyr

Je sais qu'il est assez tard pour répondre à cela, mais cela aiderait au moins quelqu'un.

Vous devriez probablement ajouter ces lignes de code pour afficher cette icône de navigation.

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    mDrawerToggle.onConfigurationChanged(newConfig);
}
44
Naveen Kumar

Mettez simplement ce code dans votre fichier styles.xml:

<item name="homeAsUpIndicator">@drawable/ic_drawer</item>
<item name="Android:homeAsUpIndicator">@drawable/ic_drawer</item>

J'ai eu ce même problème et cela a fonctionné pour moi.

MODIFIER

Par programme, vous pouvez définir: getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);

20
Filipe Brito

Vous devez mettre ce code:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);

ou

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_drawer);

J'espère que ce code vous aidera.

17
Cabezas

J'ai résolu le même problème en ayant un <meta-data> spécifié pour mon activité mais la valeur Android: pointe vers la même activité.

Par conséquent, si le nom de l'activité est MainActivity, ajoutez la balise ci-dessous à votre activité dans le fichier manifeste.

<meta-data
     Android:name="Android.support.PARENT_ACTIVITY"
     Android:value="com.example.MainActivity" />

J'espère que cela t'aides. :)

2
Atul O Holic

Vérifiez dans AndroidManifest.xml, pour cette activité spécifique PAS pour avoir les métadonnées "Android.support.PARENT_ACTIVITY" ensemble. Essayez de supprimer le <meta-data> s'il est défini comme ceci:

<activity> 
...
 <meta-data
    Android:name="Android.support.PARENT_ACTIVITY"
    Android:value="com.company.project.ParentActivity"/>
</activity>
0
Alex Deac