Botón ActionBar del cajón de navegación no funciona

Estoy trabajando en un proyecto de android y estoy intentando integrar el nuevo cajón de la navegación usando el ejemplo de http://developer.android.com/training/implementing-navigation/nav-drawer.html .

Su trabajo en su mayoría a excepción de una cosa, el botón de la barra de la acción para arriba no exhibe el menú, pero si deslizo mi dedo sobre la pantalla principal de la actividad del borde, entonces el menú aparece, así que sé que no hay nada mal con el menú real , Es sólo el botón de la barra de acción.

A continuación se muestra el código

public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; private CharSequence mTitle; private CharSequence mDrawerTitle; private String[] mPlanetTitles; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTitle = mDrawerTitle = getTitle(); mPlanetTitles = getResources().getStringArray(R.array.planets_array); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); mDrawerList = (ListView)findViewById(R.id.left_drawer); MenuItemAdapter menuAdapter = new MenuItemAdapter(this); menuAdapter.add(new MenuItem("Hello")); menuAdapter.add(new MenuItem("World")); menuAdapter.add(new MenuItem("Parsnips")); menuAdapter.add(new MenuItem("Turnips")); mDrawerList.setAdapter(menuAdapter); mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); mDrawerToggle = new ActionBarDrawerToggle( this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_closed) { public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); if (savedInstanceState == null) { selectItem(0); } } @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; } private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); } } private void selectItem(int position) { // update the main content by replacing fragments android.app.Fragment fragment = new PlanetFragment(); Bundle args = new Bundle(); args.putInt(PlanetFragment.ARGS_PLANET_NUMBER, position); fragment.setArguments(args); android.app.FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit(); mDrawerList.setItemChecked(position, true); setTitle(mPlanetTitles[position]); mDrawerLayout.closeDrawer(mDrawerList); } @Override public void setTitle(CharSequence title) { mTitle = title; getActionBar().setTitle(mTitle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } public static class PlanetFragment extends android.app.Fragment { public static final String ARGS_PLANET_NUMBER = "planet_number"; public PlanetFragment() { } @Override public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) { View rootView = inflator.inflate(R.layout.fragment_planet, container, false); int i = getArguments().getInt(ARGS_PLANET_NUMBER); String planet = getResources().getStringArray(R.array.planets_array)[i]; //((TextView)rootView.findViewById(R.id.fragment_text_view)).setText(planet); getActivity().setTitle("Planet: " + planet); return rootView; } } private class MenuItem { public String menuName; public MenuItem(String menuName) { this.menuName = menuName; } } public class MenuItemAdapter extends ArrayAdapter<MenuItem> { public MenuItemAdapter (Context context) { super(context,0); } public View getView (int position, View convertView, ViewGroup parent) { convertView = null; if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_menu_item, null); } /*TextView title = (TextView)convertView.findViewById(R.id.row_title); title.setText(getItem(position).menuName); title.setVisibility(View.VISIBLE);*/ EditText title = (EditText)convertView.findViewById(R.id.row_edittext); title.setHint(getItem(position).menuName); title.setVisibility(View.VISIBLE); return convertView; } } } 

Gracias por cualquier ayuda que usted nos pueda proporcionar.

Se le olvidó implementar onOptionsItemSelected

Aquí es donde ocurre la magia:

 @Override public boolean onOptionsItemSelected(MenuItem item) { // Pass the event to ActionBarDrawerToggle, if it returns // true, then it has handled the app icon touch event if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } // Handle your other action bar items... return super.onOptionsItemSelected(item); } 

Para aquellos que todavía están teniendo problemas, puede que falte este método (que OP tiene pero yo había eliminado):

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

Su trabajo para mí.

 drawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mDrawer.openDrawer(GravityCompat.START); } }); 

Aquí te diré la manera SIMPLE Y FÁCIL de crear la navegación del cajón en androide sin usar del estudio androide. Acabo de utilizar un ADT para crear el cajón de la navegación. Aquí está el código echar un vistazo

Activity_main.xml

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dr_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:id="@+id/mainContent" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/txt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="swipe content"/> <Button android:id="@+id/bt1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Click to open d"/> </RelativeLayout> <RelativeLayout android:id="@+id/drawer" android:layout_width="200dp" android:layout_height="match_parent" android:layout_gravity = "start" android:background="#FFFFFF"> <TextView android:id="@+id/txt2" android:layout_width="200dp" android:layout_height="wrap_content" android:text="drawer content are here arr"/> <Button android:id="@+id/bt2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Click to open d"/> </RelativeLayout> </android.support.v4.widget.DrawerLayout> 

MainActivity.java

 package com.example.drawer1; import android.os.Bundle; import android.annotation.SuppressLint; import android.app.Activity; import android.content.res.Configuration; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout.DrawerListener; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private DrawerLayout drawerLayout; private View drawerView; Button bt1,bt2; private DrawerListener myDrawerListner; private ActionBarDrawerToggle mDrawerTogle; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawerLayout = (DrawerLayout) findViewById(R.id.dr_layout); drawerView = (View) findViewById(R.id.drawer); drawerLayout.setDrawerListener(myDrawerListner); bt1 = (Button) findViewById(R.id.bt1); bt2 = (Button) findViewById(R.id.bt2); mDrawerTogle =new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer,R.string.open_drawer,R.string.close_drawer){ public void onDrawerOpened(View drawerView) { // TODO Auto-generated method stub super.onDrawerOpened(drawerView); getActionBar().setTitle("SpeakEng"); } public void onDrawerClosed(View view) { // TODO Auto-generated method stub super.onDrawerClosed(view); getActionBar().setTitle("SpeakEng"); } }; drawerLayout.setDrawerListener(mDrawerTogle); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); bt2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub drawerLayout.closeDrawer(drawerView); } }); bt1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub drawerLayout.openDrawer(drawerView); } }); } @Override public void onConfigurationChanged(Configuration newConfig){ super.onConfigurationChanged(newConfig); mDrawerTogle.onConfigurationChanged(newConfig); } public boolean onOptionsItemSelected(MenuItem item){ if (mDrawerTogle.onOptionsItemSelected(item)){ return true; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState){ super.onPostCreate(savedInstanceState); //Sync the toogle state after onRestoreInstanceState has occured. mDrawerTogle.syncState(); } } 

Puede abrir el cajón 1) haciendo clic en el botón, 2) tirando de la izquierda, 3) al hacer clic en el icono del cajón en la barra de acción. Como usted quiere que usted puede abrir it.I dio tres opciones.

Note: drawerLayout debe ser elemento raíz como se muestra en el código. Y mantener onConfigurationChanged (), onOptionsItemSelected (), onPostCreate (). Estos tres métodos son muy importantes para crear un cajón de navegación.

¡La mejor de las suertes!.

  • ¿Cómo extender la vista de la disposición del cajón?
  • Administrar correctamente la navegación Tabbar con ActivityGroup o Fragments etc en Android?
  • ActionBar Drop Down navegación - el cambio de orientación pone fragmento incorrecto en
  • ¿Cómo puedo añadir un solo divisor después de algunos elementos para separar un grupo en RecyclerView?
  • Android: NavigationDrawer y ActionBarCompat
  • Actualizar el estado seleccionado del cajón de navegación después de volver a pulsar
  • Android Eliminar sombra en el cajón de navegación
  • Restauración del estado del fragmento al cambiar fragmentos a través de la barra de navegación inferior
  • ¿Es posible crear una aplicación de navegación GPS turn-by-turn en Android con Google Maps?
  • Cómo crear un cajón de navegación Android 5 de altura completa
  • Navegación en interiores y seguimiento de personas usando BLE
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.