Como poner o habilitar boton de atras en toolbar

publicado por: Anonymous

me esta pasando algo muy raro, no me sale el botón para ir atrás en la toolbar y en un proyecto anterior si me sale.. seguí los mismo pasos con la diferencia que ahora la toolbar la tengo en un xml aparte pero no sé por que no me sale nada x.x

este es toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_height="wrap_content"
  android:layout_width="match_parent"
  android:minHeight="?attr/actionBarSize"
  android:background="?attr/colorPrimary"
  android:elevation="4dp"
  android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
  app:popupTheme="@style/ThemeOverlay.AppCompat.Light" >
</android.support.v7.widget.Toolbar>

mi MainActivity tiene un recyclerView, cuando presiono un item voy a mi segunda actividad en que quiero que salga el botón atrás pero no me resulta x.x

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/RelativeLayoutMain"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context="com.example.pauli.applista.MainActivity">

  <include android:id="@+id/toolbar"
      layout="@layout/toolbar" />

  <android.support.v7.widget.RecyclerView
      android:id="@+id/reciclador"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:padding="3dp"
      android:scrollbars="vertical"
      android:layout_below="@+id/toolbar" />

</RelativeLayout>

En el manifest tengo asignada la ctivida principal como padre de la segunda

<activity
        android:name=".Segunda"
        android:parentActivityName=".MainActivity">
</activity>

En el tema de la aplicación tengo el código para habilitar mi toolbar

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- habilitar toolbar -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Ahora en mi MainActivity.java asigno la toolbar para que aparezca

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

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

Sigo con todo el codigo para inicializar recycler y todo eso.. en el metodo para el click de cada item en el recyclerView inicio la segunda actividad.

@Override
public void onClick(ImagenAdapter.ViewHolder holder, int idImagen) {
    Intent intent = new Intent(MainActivity.this, Segunda.class);
    Bundle b = new Bundle();
    b.putInt("IMAGEN", idImagen);
    intent.putExtras(b);
    startActivity(intent);
}

En el xml de mi segunda actividad de momento solo incluyo la toolbar

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/activity_segunda"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context="com.example.pauli.applista.Segunda">

<include android:id="@+id/toolbar"
    layout="@layout/toolbar" />

</RelativeLayout>

Y mi archivo Segunda.java solo tiene el onCreate

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

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

Según yo esto está bien y debería funcionar pero no sé por que no quiere salir el botón.. espero que alguien sepa.. quizás es algo muy tonto que estoy haciendo mal x.x

solución

Asegura que tu clase Activity extienda de
AppCompactActivity, con esto puedes realizar el cargado del ToolBar:

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

Encontre como realizarlo lo puedes ver en la documentación

Para habilitar la navegación se realiza mediante el llamado de setDisplayHomeAsUpEnabled():

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

Si setDisplayHomeAsUpEnabled() se establece como true si la selección de “home” regresa a un solo nivel en la UI en lugar de volver al nivel superior o primera página.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *