2015-12-09 41 views
5

Sto tentando di visualizzare il cassetto di navigazione nella barra degli strumenti. Come penso di aver già scritto tutto ciò di cui ha bisogno, ma nulla viene visualizzato nella barra degli strumenti. Solo testo Zoo. Non icona per display navbarCassetto di navigazione DrawerLayout non visualizzato

Sono nuovo su Android e non mi sorprenderà se mi manca qualcosa.

Ecco la mia MainActivity.java

package com.example.zoo; 

import android.content.res.Configuration; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
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.View; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends AppCompatActivity { 

    private DrawerLayout mDrawerLayout; 
    private ActionBarDrawerToggle mActionBarDrawerToggle; 

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

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_Layout); 
     mActionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_opened, R.string.drawer_closed){ 
      @Override 
      public void onDrawerOpened(View drawerView) { 
       super.onDrawerOpened(drawerView); 
       if (getSupportActionBar() != null) { 
        getSupportActionBar().setTitle(R.string.drawer_opened); 
       } 
      } 

      @Override 
      public void onDrawerClosed(View drawerView) { 
       super.onDrawerClosed(drawerView); 
       if (getSupportActionBar() != null) { 
        getSupportActionBar().setTitle(R.string.drawer_closed); 
       } 
      } 
     }; 

     mDrawerLayout.setDrawerListener(mActionBarDrawerToggle); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     mActionBarDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     mActionBarDrawerToggle.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.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. 

     if(mActionBarDrawerToggle.onOptionsItemSelected(item)) 
      return true; 

     int id = item.getItemId(); 

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

     return super.onOptionsItemSelected(item); 
    } 
} 

Ecco la mia content_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.gsiradze.zoo.MainActivity" 
android:orientation="vertical"> 
<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:background="?attr/colorPrimary" 
    android:minHeight="?android:attr/actionBarSize"/> 

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawer_Layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 

    <ListView 
     android:id="@+id/drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="@android:color/white"/> 

    </android.support.v4.widget.DrawerLayout> 

</LinearLayout> 

e, naturalmente, ho questi nomi di stringa

<resources> 
    <string name="drawer_opened">Select an item</string> 
    <string name="drawer_closed">Zoo</string> 
</resources> 
+0

Dove hai scritto per aprire il cassetto di navigazione? –

+0

@MikeM. puoi postare come risposta. grazie compagno – gsiradze

+0

@ MikeM. in realtà entrambi sono corretti. Grazie – gsiradze

risposta

3

Il problema è questa linea:

getSupportActionBar().setDisplayShowHomeEnabled(true); 

Per la vostra configurazione attuale, dovrebbe essere:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

si potrebbe anche, invece, utilizzare il costruttore di cinque parametri per il Toggle, e passare l'oggetto Toolbar come terzo discussione.

mActionBarDrawerToggle = new ActionBarDrawerToggle(this, 
                mDrawerLayout, 
                toolbar, 
                R.string.drawer_opened, 
                R.string.drawer_closed) {...}; 

In questo caso, è possibile omettere il supporto ActionBarset*() chiamate, e il controllo onOptionsItemSelected(item) sul Toggle. Ciò è utile se il tuo Toolbar non è impostato come supporto ActionBar. Tuttavia, lo documentation consiglia la funzione di costruzione a quattro parametri e quindi la configurazione corrente, se Toolbar è impostato come tale.

Problemi correlati