2016-06-02 11 views
0

Ich versuche, eine App zu erstellen. Ich bekomme keinen Hamburger Button zurück nur der Pfeil wird auf der Aktionsleiste angezeigt. Wie man Hamburger-Knopfshow auf Aktionsleiste zeigt. Unter Verwendung der folgenden Code-Wie zu implementieren Navigationsschublade

import android.content.res.Configuration; 
import android.os.Bundle; 
import android.view.MenuItem; 


import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListView; 
import android.widget.TextView; 



public class MainActivity extends FragmentActivity { 

ActionBarDrawerToggle mDrawerToggle; 
DrawerLayout mDrawer; 
TextView messageTextView; 
ListView mDrawerListView; 

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

    // Get references to the TextView and DrawerLayout 
    messageTextView = (TextView) findViewById(R.id.messageTextView); 
    mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

    // These lines are needed to display the top-left hamburger button 
    mDrawer.setDrawerListener(mDrawerToggle); 
    getActionBar().setDisplayShowHomeEnabled(true); 
    getActionBar().setDisplayHomeAsUpEnabled(true); 

    // Make the hamburger button work 
    mDrawerToggle = new ActionBarDrawerToggle(this,mDrawer,R.string.drawer_open,R.string.drawer_close){ 
     @Override 
     public void onDrawerClosed(View drawerView) { 
     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
     } 
    }; 



    // Change the TextView message when ListView item is clicked 
    mDrawerListView = (ListView) findViewById(R.id.left_drawer); 
    mDrawerListView.setOnItemClickListener(new ListView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      messageTextView.setText("Menu Item at position " + position + " clicked.");; 
      mDrawer.closeDrawer(GravityCompat.START); 
     } 
    }); 
} 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 


    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 


@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); 
} 

}

Wie Hamburger Knopf auf Aktion bar.I immer nur Pfeil auf der Aktionsleiste zurück bin zeigen Sie mir bitte sagen, wie Hamburger-Taste auf der Aktionsleiste angezeigt werden soll.

Dank

error description here

+0

es App-Icon zeigen –

+0

Schublade = (DrawerLayout) findViewById (R.id.drawer_layout); ActionBarDrawerToggle Toggle = new ActionBarDrawerToggle ( dies, Schublade, Symbolleiste, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener (toggle); toggle.syncState(); –

Antwort

0

ändern,

mDrawerToggle = new ActionBarDrawerToggle(this,mDrawer,R.string.drawer_open,R.string.drawer_close){ 
     @Override 
     public void onDrawerClosed(View drawerView) { 
     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
     } 
    }; 

To,

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer, 
       R.drawable.ic_drawer, R.string.app_name) { 
      @Override 
      public void onDrawerClosed(View drawerView) { 
       super.onDrawerClosed(drawerView); 

      } 

      @Override 
      public void onDrawerOpened(View drawerView) { 
       super.onDrawerOpened(drawerView); 

      } 
     }; 

HINWEIS: Sie müssen Icon in ziehbar Ordner zu halten. oder Sie können das Standardsystem des Systems verwenden.

Glückliche Kodierung.

+0

Ich habe zuerst schon "R.drawable.ic_drawer" hinzugefügt, wenn ich auf das Hamburger Button Menü klicke ist offen aber der Hamburger hat nicht auf Backpfeil gewechselt..Ich will wenn ich auf Hamburger button klicke dann in den Zurückpfeil um –

+0

@ vrund Erstens ist das kein gültiger Konstruktor für jede Version von 'ActionBarDrawerToggle'. Zweitens nimmt nur die v4-Version eine aufzeichnbare Ressourcen-ID, und diese Version hat keine Hamburger-Pfeil-Animation. –

+0

ok, Bitte sagen Sie mir, wie Hamburger-Pfeil-Animation zu implementieren .. –

0

Ihre actionBarDrawerToggle auf diese Weise initialisieren: Dieses

ActionBarDrawerToggle toggle; 
toggle = new ActionBarDrawerToggle(this, mDrawer, R.string.drawer_open, R.string.drawer_close) { 
      @Override 
      public void onDrawerClosed(View drawerView) { 
      } 

      @Override 
      public void onDrawerOpened(View drawerView) { 
      } 

      @Override 
      public void onDrawerSlide(View drawerView, float slideOffset) { 
       super.onDrawerSlide(drawerView, slideOffset); 
       toggle.syncState(); 

      } 


     }; 
+0

Dieser Quellcode Fehler erhalten .. Crash-Problem, wenn Sie die App starten –

+0

können Sie jetzt überprüfen? wenn es noch einen Fehler gibt, fügen Sie bitte den Logcat – erluxman

+0

ein, ich habe log cat veröffentlicht, um Fehler zu sehen, klicken Sie bitte auf "error description here" –

0

arbeiten sollten Sie die Home Artikelauswahl im MainActivity behandeln, je nach dem Zustand des DrawerToggle. Auf diese Weise müssen Sie nicht jedem Fragment denselben Code hinzufügen.

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Only handle with DrawerToggle if the drawer indicator is enabled. 
     if (mDrawerToggle.isDrawerIndicatorEnabled() && 
       mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     // Handle action buttons 
     switch (item.getItemId()) { 
      // Handle home button in non-drawer mode 
      case android.R.id.action_settings: 
       onBackPressed(); 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    }