volver studio regresar programar para icono boton barra bar atras anterior agregar activity android android-actionbar android-homebutton

android - studio - Mostrar el botón Atrás en la barra de acciones



regresar a un activity anterior android (16)

Estoy tratando de mostrar un Back button en la Action bar para mover la página / actividad anterior o a la página principal (primera apertura). Y no puedo hacerlo

mi código.

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

el código está en onCreate .


Agregue estas líneas a onCreate ()

android.support.v7.app.ActionBar actionBar = getSupportActionBar(); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true);

y en onOptionItemSelected

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: //Write your logic here this.finish(); return true; default: return super.onOptionsItemSelected(item); } }

Espero que esto te ayudará..!


Creo que onSupportNavigateUp() es la mejor y más fácil manera de hacerlo, verifique el código a continuación.

si lo quieres programáticamente, agrega esta línea al método onCreate()

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Nota: asegúrese de que la barra de acciones no sea nula.

Y anule este método

@Override public boolean onSupportNavigateUp(){ finish(); return true; }

Eso es
O No programáticamente puede agregar meta a la actividad en el archivo de manifiesto como

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

Editar: si no está utilizando la actividad de AppCompat entonces no use la palabra de support , puede usar

getActionBar().setDisplayHomeAsUpEnabled(true); // In `OnCreate();` @Override public boolean onNavigateUp(){ finish(); return true; }

Gracias a @atariguy por sus comentarios.


En su método onCreate , agregue:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Al definir en AndroidManifest.xml la actividad principal (la actividad que será llamada una vez que se presiona el botón Atrás en la barra de acciones):

En su definición de <activity> en el Manifiesto, agregue la línea:

android:parentActivityName="com.example.activities.MyParentActivity"


La magia ocurre en onOptionsItemSelected .

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // app icon in action bar clicked; go home Intent intent = new Intent(this, HomeActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } }


Lo resolví de esta manera

@Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()) { case android.R.id.home: onBackPressed(); finish(); return true; default: return super.onOptionsItemSelected(item); } } @Override public void onBackPressed(){ Intent backMainTest = new Intent(this,MainTest.class); startActivity(backMainTest); finish(); }


Para lograr esto, hay simplemente dos pasos,

Paso 1: vaya a AndroidManifest.xml y agregue este parámetro en la etiqueta <activity> - android:parentActivityName=".home.HomeActivity"

Ejemplo:

<activity android:name=".home.ActivityDetail" android:parentActivityName=".home.HomeActivity" android:screenOrientation="portrait" />

Paso 2: en ActivityDetail agregue su action para la página / actividad anterior

Ejemplo:

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


Pruebe este código, lo considera solo si necesita el botón Atrás.

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //YOUR CODE getSupportActionBar().setDisplayHomeAsUpEnabled(true); //YOUR CODE } @Override public boolean onOptionsItemSelected(MenuItem item) { onBackPressed(); return true; }


Pruebe esto, en su onCreate ()

getActionBar().setHomeButtonEnabled(true); getActionBar().setDisplayHomeAsUpEnabled(true);

Y para clickevent,

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // app icon in action bar clicked; goto parent activity. this.finish(); return true; default: return super.onOptionsItemSelected(item); } }


Sé que las anteriores son muchas soluciones útiles, pero esta vez leí este artículo (el actual Android Studio 2.1.2 con SDK 23) algún método anterior no funciona.

A continuación, mi solución para la subactividad es MapsActivity

Primero, debe agregar parentActivity en

AndroidManifest.xml

Me gusta esto :

<application ... > ... <!-- Main activity (which has no parent activity) --> <activity android:name="com.example.myapp.MainActivity" ...> ... </activity> <!-- A child of the main activity --> <activity ..... android:parentActivityName=".MainActivity" > <!-- Support Parent activity for Android 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myapp.MainActivity" /> </activity> </application>

Segundo, asegúrese de que su AppCompatActivity amplíe AppCompatActivity , no FragmentActivity.

En tercer lugar, anule el método onOptionsItemSelected()

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // app icon action bar is clicked; go to parent activity this.finish(); return true; case R.id.action_settings: return true; default: return super.onOptionsItemSelected(item); } }

Espero que esto ayude!


Sé que llegué un poco tarde, pero pude solucionar este problema siguiendo los docs directamente.

Agregue la etiqueta de metadatos a AndroidManifest.xml (para que el sistema lo sepa)

<activity android:name=".Sub" android:label="Sub-Activity" android:parentActivityName=".MainChooser" android:theme="@style/AppTheme.NoActionBar"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainChooser" /> </activity>

A continuación, habilite el botón de retroceso (arriba) en su MainActivity

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_child); // my_child_toolbar is defined in the layout file Toolbar myChildToolbar = (Toolbar) findViewById(R.id.my_child_toolbar); setSupportActionBar(myChildToolbar); // Get a support ActionBar corresponding to this toolbar ActionBar ab = getSupportActionBar(); // Enable the Up button ab.setDisplayHomeAsUpEnabled(true); }

¡Y estarás listo!

Fuente: docs


Solución oficial

Agregue esos dos fragmentos de código a su SubActividad

@Override public void onCreate(Bundle savedInstanceState) { ... getActionBar().setDisplayHomeAsUpEnabled(true); } @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); }

agregue metadatos y parentActivity a manifestar para soportar sdk inferior.

<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.SubActivity" 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>

Referencia aquí: http://developer.android.com/training/implementing-navigation/ancestral.html


bueno, este es simple para mostrar el botón Atrás

actionBar.setDisplayHomeAsUpEnabled(true);

y luego puede personalizar el evento posterior en onOptionsItemSelected

case android.R.id.home: this.finish(); return true;


en el método de escritura onCreate

Toolbar toolbar = findViewById(R.id.tool); setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); } } @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; } @Override public void onBackPressed() { super.onBackPressed(); startActivity(new Intent(ActivityOne.this, ActivityTwo.class)); finish(); }

y este es el archivo xml-

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark" android:id="@+id/tool">

y en styles.xml cambiarlo a

Theme.AppCompat.Light.NoActionBar

esto es todo lo que tenemos que hacer.


mi código de trabajo para volver a la pantalla.

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Toast.makeText(getApplicationContext(), "Home Clicked", Toast.LENGTH_LONG).show(); // go to previous activity onBackPressed(); return true; } return super.onOptionsItemSelected(item); }


public void initToolbar(){ //this set back button getSupportActionBar().setDisplayHomeAsUpEnabled(true); //this is set custom image to back button getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_btn_image); } //this method call when you press back button @Override public boolean onSupportNavigateUp(){ finish(); return true; }


ActionBar actionBar=getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return super.onOptionsItemSelected(item); }