Arriba Navegación (flecha de la barra de acción flecha) no funciona para fragmentos

Tengo cajón de diseño como un diseño de base de mi actividad y estoy reemplazando dos fragmentos en un marco presente dentro de este cajón de diseño. El primer fragmento no se agrega en la pila trasera del fragmento. Estoy mostrando icono de hamburguesa en mi actividad (también quiero el menú del cajón en mi primer fragmento). En el segundo fragmento deshabilité el icono de la hamburguesa por mActionBarDrawerToggle.setDrawerIndicatorEnabled(false) y actionBar.setDisplayHomeAsUpEnabled(true) botón de nuevo usando actionBar.setDisplayHomeAsUpEnabled(true) .

En los primeros fragmentos onResume I habilitado icono de hamburguesa por mActionBarDrawerToggle.setDrawerIndicatorEnabled (true) `para que cuando el usuario presiona el botón hacia atrás (tanto el hardware como el botón de la barra de acción) del segundo fragmento, el usuario volverá al primer fragmento y el icono de la hamburguesa estará habilitado . Todo está funcionando bien sólo no soy capaz de volver de segundo fragmentos barra de acción atrás botón. No puedo hacer clic en él. A continuación se muestra mi código: –

Código de actividad

 if (Utility.isLargeScreen(this)) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); else setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); mHiddenGemsApplication = (HiddenGemsApplication) getApplication(); super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); initViews(); setSupportActionBar(mToolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayHomeAsUpEnabled(true); } mTextViewActionBarTitle.setText(getString(R.string.app_name)); mActionBarDrawerToggle = new ActionBarDrawerToggle(HomeActivity.this, mDrawerLayout, mToolbar, R.string.open_drawer, R.string.close_drawer) { @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); } @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); } }; mDrawerLayout.setDrawerListener(mActionBarDrawerToggle); mActionBarDrawerToggle.syncState(); mFragmentManager = getSupportFragmentManager(); replaceFragment(new CategoryFragment(), getString(R.string.app_name), CategoryFragment.TAG); @Override public void onBackPressed() { if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) { mDrawerLayout.closeDrawers(); return; } super.onBackPressed(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: if (mFragmentManager.getBackStackEntryCount() > 0) { mFragmentManager.popBackStack(); } return true; default: return super.onOptionsItemSelected(item); } } public void replaceFragment(Fragment fragment, String actionBarTitle, String tag) { if (mFragmentManager == null) return; FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.content_frame, fragment, tag); if (!tag.equals(CategoryFragment.TAG)) fragmentTransaction.addToBackStack(tag); fragmentTransaction.commit(); setActionBarTitle(actionBarTitle); } public void setActionBarTitle(String actionBarTitle) { if (!TextUtils.isEmpty(actionBarTitle)) mTextViewActionBarTitle.setText(actionBarTitle); } public void setDrawerIndicatorEnabled(boolean value) { if (mActionBarDrawerToggle != null) { mActionBarDrawerToggle.setDrawerIndicatorEnabled(value); } } 

XML de la actividad

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="nirvaniclabs.com.hiddengems.activities.HomeActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <include android:id="@+id/toolbarlayout" layout="@layout/toolbar_layout" /> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/toolbarlayout" /> </RelativeLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:menu="@menu/navigation_items" /> </android.support.v4.widget.DrawerLayout> 

Primer Fragmento: –

  private Button mButtonTemp; private AppCompatActivity mActivity; public static String TAG = "CategoryFragment"; public CategoryFragment() { // Required empty public constructor } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof Activity) mActivity = (AppCompatActivity) context; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View viewGroup = inflater.inflate(R.layout.fragment_category, container, false); initViews(viewGroup); mButtonTemp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ((HomeActivity) mActivity).replaceFragment(new TripListFragment(), "Trip Fragment", TripListFragment.TAG); } }); return viewGroup; } private void initViews(View viewGroup) { mButtonTemp = (Button) viewGroup.findViewById(R.id.btn_temp); } @Override public void onResume() { super.onResume(); ((HomeActivity) mActivity).setDrawerIndicatorEnabled(true); ((HomeActivity) mActivity).setActionBarTitle(getString(R.string.app_name)); } 

Segundo fragmento

  private AppCompatActivity mActivity; public static String TAG = "TripListFragment"; public TripListFragment() { // Required empty public constructor } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof Activity) mActivity = (AppCompatActivity) context; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); ActionBar actionBar = mActivity.getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayHomeAsUpEnabled(true); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_trip_list, container, false); } @Override public void onResume() { super.onResume(); ((HomeActivity) mActivity).setDrawerIndicatorEnabled(false); } 

Además, cuando estoy en el segundo fragmento soy capaz de deslizar y ver el menú del cajón. No quiero este comportamiento, el menú del cajón sólo debe abrirse en el fragmento 1.

Si cualquier cosa es incorrecta en mi código por favor hágamelo saber.

Finalmente obtuve la respuesta. En mi escenario estoy desactivando el indicador de cajón por mActionBarDrawerToggle.setDrawerIndicatorEnabled(false); Y debido a este icono de Navegación los clics se han inhabilitado. Para habilitar esto, tengo que agregar ToolbarNavigationClickListener a ActionBarDrawerToggle que habilitará los clics de iconos de navegación.

A continuación se muestra el código de mi trabajo: –

 mActionBarDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onBackPressed(); } }); 

Refiérase a este enlace para más aclaraciones

Después de luchar con el mismo problema durante edades, finalmente conseguí poner el botón Arriba para trabajar en fragmentos con este código. Debe tener setHasOptionsMenu configurado en onCreate () o onCreateView ()

 setHasOptionsMenu(true); 

A continuación, en onOptionsItemSelected () agregue esta comprobación para que el botón de inicio / inicio se presione a la instrucción switch () [o if …]:

 @Override public boolean onOptionsItemSelected(MenuItem item) { xL(); switch (item.getItemId()) { case android.R.id.home : getActivity().onBackPressed(); break; case R.id.mn_exit : exitFragment(); break; default : break; } return super.onOptionsItemSelected(item); } 
  • Cómo ocultar la barra de herramientas en un ViewPager al usar Scrolling RecyclerView?
  • ¿Cómo cambiar el contenido de la barra de herramientas mediante programación?
  • Barra de herramientas: IllegalStateException - configura tu compilación para VectorDrawableCompat
  • Cómo proporcionar Navegación arriba con el botón de inicio de la barra de herramientas en la barra de herramientas v7
  • Establecer el icono al final de la barra de herramientas
  • No se puede bloquear el evento de clic de botón de inicio de la barra de herramientas
  • Android Lollipop, añadir menú emergente del título en la barra de herramientas
  • Barra de herramientas Navegación Icono de Hamburger ausente
  • ¿Por qué el título no está centrado en la barra de herramientas?
  • Barra de herramientas transparente para la barra de herramientas de despliegue agotada
  • Efecto Parallax con la barra desplegable no funcionando, imagen en el encabezado aplastado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.