Barra de acciones El botón Atrás no funciona

con la ayuda de estos documentos de Android . Estoy intentando hacer un botón Atrás de la barra de acciones. Obtengo un botón Atrás de la barra de acciones como estos a continuación:

enter image description here

Salida:

Pero mi problema es Después de ver las imágenes de la Galería, presiono el action bar back button .

Entonces it is not working Pero tiene que go back to previous page .

A continuación se enumeran las codificaciones.

GalleryActivity.java:

  import android.app.ActionBar; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.NavUtils; import android.view.MenuItem; import com.fth.android.R; public class GalleryActivity extends FragmentActivity { private int position; private static String id; private static String name; private DemoCollectionPagerAdapter mDemoCollectionPagerAdapter; private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gallery); position = getIntent().getExtras().getInt("position"); id = getIntent().getExtras().getString("id"); name = getIntent().getExtras().getString("name"); mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter(getSupportFragmentManager()); // Set up action bar. final ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); // getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME|ActionBar.DISPLAY_USE_LOGO|ActionBar.DISPLAY_HOME_AS_UP); // Set up the ViewPager, attaching the adapter. mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mDemoCollectionPagerAdapter); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Intent upIntent = new Intent(this, HomeActivity.class); upIntent.putExtra("position", position); if (NavUtils.shouldUpRecreateTask(this, upIntent)) { TaskStackBuilder.from(this) .addNextIntent(upIntent) .startActivities(); finish(); } else { NavUtils.navigateUpTo(this, upIntent); } return true; } return super.onOptionsItemSelected(item); } } 

GalleryDetailFragment.java:

 import com.sit.fth.model.GalleryDetail; import com.sit.fth.util.APIServiceHandler; import com.sit.fth.util.AppConstants; import com.sit.fth.util.AppPromoPager; public class GalleryDetailFragment extends BaseFragment implements PromoPagerListener { private TextView countView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this.setHasOptionsMenu(true); id = getArguments().getString("id"); name = getArguments().getString("name"); View view = inflater.inflate(R.layout.app_pager, null); return view; } } 

Cualquiera me puede ayudar si sabes cómo resolver estos. Gracias.

Resolví estos problemas agregando la siguiente encoding en GalleryActivity .

 ActionBar 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); } 

En MainActivity :

Previamente,

la clase pública HomeActivity extends BaseActivity

Luego me cambio a

la clase pública HomeActivity extends FragmentActivity

En GalleryFragment:

Utilizo Intent para pasarlo a GalleryActivity .

 @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { Gallery gallery = (Gallery) arg0.getAdapter().getItem(arg2); Intent intent = new Intent(getActivity(), GalleryActivity.class); intent.putExtra("position", position); intent.putExtra("id", gallery.getGalId()); intent.putExtra("name", gallery.getAlbumTitle()); startActivity(intent); // mCallback.OnGalItemSelected(gallery.getGalId(),gallery.getAlbumTitle()); } 

Por favor lea esto

Deberías tener algo como esto:

       

luego, llamar a NavUtils.navigateUpFromSameTask (esto) provocará la navegación a la actividad principal (HomeActivity).

Prueba como

En primer lugar, debe usar addToBackStack() antes de commit() para los fragmentos

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: if(getSupportFragmentManager().getBackStackEntryCount()>0) getSupportFragmentManager().popBackStack(); return true; } return super.onOptionsItemSelected(item); } 

Ninguna de las respuestas proporcionadas aquí funcionó para mí. Tuve que poner el switch dentro del método onMenuItemSelected . Soy consciente de que esto no es lo que se afirma en la documentación de Android, pero aún así, funcionó, así que pensé que dejaría esto aquí para las personas que se topan con el mismo problema. Mi problema involucraba una Activity lugar de un Fragment , pero debería ser más o menos lo mismo.

 class FooActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... getActionBar().setHomeButtonEnabled(true); getActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return false; } } 

Para mí, tuve que establecer mDrawerToggle.setToolbarNavigationClickListener(...) en un oyente que desencadena la acción de retorno. De lo contrario, no hace nada. Así es como se ve el código fuente de ActionBarDrawerToggle :

 toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mDrawerIndicatorEnabled) { toggle(); } else if (mToolbarNavigationClickListener != null) { mToolbarNavigationClickListener.onClick(v); } } }); 

Entonces, el comportamiento predeterminado es llamar a nuestro oyente y no hacer ninguna magia por sí mismo.

onCreate

 { ... Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); resetActionBar(); ... } public void resetActionBar() { getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } @Override public void onBackPressed() { FragmentManager fm = getSupportFragmentManager(); int count = fm.getBackStackEntryCount(); if(count == 0) { // Do you want to close app? showDialog(); }else{ super.onBackPressed(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); Log.i("coming", "comming"); //noinspection SimplifiableIfStatement if(id==android.R.id.home){ if (getSupportFragmentManager().getBackStackEntryCount() > 0) onBackPressed(); else drawerLayout.openDrawer(navigationView); return true; } return super.onOptionsItemSelected(item); } 

Aquí hay una cosa más para verificar en caso de que las otras respuestas aquí (o aquí o aquí o aquí ) no funcionen.

Copié un código de otra actividad que deshabilitó el menú. La eliminación de este método (y la aplicación de las soluciones dadas en las otras respuestas) permitió que el botón de subir funcionara.

 @Override public boolean onCreateOptionsMenu(Menu menu) { // hide the menu return false; } 

Simplemente tiene que agregar la siguiente línea a la actividad en el manifest.xml. La actividad principal es la actividad a la que desea regresar.

  android:parentActivityName=".activities.MainActivity" 

Use el método SupportNavigateUp() y llame onBackPressed en este método.

En mi caso, anulé el método onCreateOptionsMenu y olvidé llamar a super al final.