working studio not bar android user-interface themes titlebar

studio - Android-Botón Atrás en la barra de título



go back button android studio (14)

En muchas aplicaciones (Calendario, Drive, Play Store) cuando toca un botón e ingresa una nueva actividad, el ícono en la barra de título se convierte en un botón Atrás, pero para la aplicación que estoy creando, eso no funciona. ¿Cómo hago para que ese ícono te lleve de vuelta a la pantalla anterior?


1.- Agregue la actividad a AndroidManifest.xml y asegúrese de proporcionar los metadatos:

<activity android:name="com.example.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstapp.MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstapp.MainActivity" /> </activity>

2.- Agregue el siguiente código al método onCreate de la actividad:

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

3.- Anular onOptionsItemSelected y usar el método estático NavUtils.navigateUpFromSameTask () para navegar lanzando la pila.

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar''s Up/Home button case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); }

Sin embargo, el uso de navigateUpFromSameTask () solo es adecuado cuando su aplicación es la propietaria de la tarea actual (es decir, el usuario comenzó esta tarea desde su aplicación). Si eso no es cierto y tu actividad se inició en una tarea que pertenece a una aplicación diferente, navegar hacia arriba debería crear una nueva tarea que pertenezca a tu aplicación, lo que requiere que crees una nueva pila.


Debe agregar el código mencionado a continuación en el archivo de manifiesto. Busque la actividad en la que desea agregar la funcionalidad de flecha hacia atrás. Si encuentras uno, entonces bien o crea la actividad

<activity android:name=".SearchActivity"> </activity>

A continuación, agregue las siguientes tres líneas de código en el medio.

<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.raqib.instadate.MainActivity" />

Y no olvide agregar este fragmento de código en onCreate (); método de su actividad particular en el que necesita la flecha hacia atrás.

Toolbar toolbar = (Toolbar) findViewById(R.id.searchToolbar); setSupportActionBar(toolbar); try{ getSupportActionBar().setDisplayHomeAsUpEnabled(true); }catch(NullPointerException e){ Log.e("SearchActivity Toolbar", "You have got a NULL POINTER EXCEPTION"); }

Así es como resolví el problema. Gracias.


Finalmente logré agregar correctamente el botón Atrás a la barra de acciones / barra de herramientas

@Override public void onCreate(Bundle savedInstanceState) { ... getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); } public boolean onCreateOptionsMenu(Menu menu) { return true; }


Hay dos pasos simples para crear un botón Atrás en la barra de título:

Primero, haga clic en el icono de la aplicación usando el siguiente código en la actividad cuya barra de título desea tener un botón Atrás en:

ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true);

Después de haber agregado el código anterior, verá una flecha hacia atrás a la izquierda del icono de la aplicación.

En segundo lugar, después de haber hecho lo anterior, aún debe crear un código que aproveche el evento click. Para hacerlo, tenga en cuenta que cuando hace clic en el ícono de la aplicación, se llama a un método onOptionsItemSelected. Para volver a la actividad anterior, agregue ese método a su actividad y coloque el código de Intent en él que lo regresará a la actividad anterior. Por ejemplo, digamos que la actividad a la que intenta regresar se llama MyActivity. Para volver, escriba el método de la siguiente manera:

public boolean onOptionsItemSelected(MenuItem item){ Intent myIntent = new Intent(getApplicationContext(), MyActivity.class); startActivityForResult(myIntent, 0); return true; }

¡Eso es!

(En la API para desarrolladores de Android, recomienda jugar con el manifiesto y agregar elementos como android: parentActivityName. Pero eso no parece funcionar para mí. Lo anterior es más simple y más confiable).

<meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" />

Y en tu actividad

getSupportActionBar().setDisplayHomeAsUpEnabled(true);


La forma más sencilla y la mejor práctica como google explica aquí :

1.Agregue un elemento principal para su actividad infantil en AndroidManifest.xml :

<activity android:name=".ChildActivity" android:parentActivityName=".ParentActivity" > </activity>

2. Active el botón Atrás en su hijoActividad:

myActionOrActionSupportBar.setDisplayHomeAsUpEnabled(true);

Funcionó para mí, espero que funcione para ti también.


Si está utilizando la nueva biblioteca de soporte para 5.1 en android studio, puede usar esto en su AppCompatActivity

ActionBar actionBar = getSupportActionBar(); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeAsUpIndicator(R.mipmap.ic_arrow_back_white_24dp); actionBar.setDisplayShowHomeEnabled(true);

aclamaciones.



Si su actividad extiende Actividad

public class YourActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xxx); getActionBar().setHomeButtonEnabled(true); [...] } [...] }

Si su acción extiende AppCompatActivity

public class YourActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xxx); getSupportActionBar().setHomeButtonEnabled(true); [...] } [...] }

No hay nada más que hacer, ver la acción de Agregar

[OPCIONAL] Para definir explícitamente la actividad principal, modifique su Manifest.xml de la siguiente manera:

<application ... > ... <!-- The main/home activity (it has no parent activity) --> <activity android:name="com.example.myfirstapp.MainActivity" ...> ... </activity> <!-- A child of the main activity --> <activity android:name="com.example.myfirstapp.YourActivity " android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstapp.MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstapp.MainActivity" /> </activity> </application>

Consulte Especificar la actividad primaria


Si su actividad se extiende a AppCompatActivity , debe anular el método onSupportNavigateUp() manera:

public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); ... } @Override public void onBackPressed() { super.onBackPressed(); this.finish(); } @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; } }

Maneje su lógica en su método onBackPressed() y simplemente llame a ese método en onSupportNavigateUp() para que el botón Atrás en el teléfono y la flecha en la barra de herramientas hagan lo mismo.


También puede simplemente onBackPressed() en su oyente OnClick. ¡Esto hace que su botón actúe como los botones predeterminados de "atrás / arriba" en las aplicaciones de Android!


También se puede hacer sin código al especificar una actividad principal en el manifiesto de la aplicación. Si desea un botón Atrás en la Actividad B que pasará a la Actividad A, simplemente agregue la Actividad A como padre de la Actividad B en el manifiesto.


Versión de peso ligero sin usar ActionBarActivity que todavía tiene los mismos bahaviors aquí:

public class ToolbarConfigurer implements View.OnClickListener { private Activity activity; public ToolbarConfigurer(Activity activity, Toolbar toolbar, boolean displayHomeAsUpEnabled) { toolbar.setTitle((this.activity = activity).getTitle()); if (!displayHomeAsUpEnabled) return; toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha); toolbar.setNavigationOnClickListener(this); } @Override public void onClick(View v) { NavUtils.navigateUpFromSameTask(activity); } }

Uso: Poner new ToolbarConfigurer(this, (Toolbar) findViewById(R.id.my_awesome_toolbar), true); en onCreate .


antes que nada en onCreate Function agregue la siguiente línea

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

y luego agregue la siguiente función en el código:

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); }


usa este código

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

después de eso, escribe este código en el método onOptionsItemSelected

int id = item.getItemId(); if (id==android.R.id.home) { finish(); }