Display Back Arrow on Toolbar Display Back Arrow on Toolbar android android

Display Back Arrow on Toolbar


If you are using an ActionBarActivity then you can tell Android to use the Toolbar as the ActionBar like so:

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);setSupportActionBar(toolbar);

And then calls to

getSupportActionBar().setDisplayHomeAsUpEnabled(true);getSupportActionBar().setDisplayShowHomeEnabled(true);

will work. You can also use that in Fragments that are attached to ActionBarActivities you can use it like this:

((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);

If you are not using ActionBarActivities or if you want to get the back arrow on a Toolbar that's not set as your SupportActionBar then you can use the following:

mActionBar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back));mActionBar.setNavigationOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {       //What to do on back clicked   }});

If you are using android.support.v7.widget.Toolbar, then you should add the following code to your AppCompatActivity:

@Overridepublic boolean onSupportNavigateUp() {    onBackPressed();    return true;}


I see a lot of answers but here is mine which is not mentioned before. It works from API 8+.

public class DetailActivity extends AppCompatActivity@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_detail);    // toolbar    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);    setSupportActionBar(toolbar);    // add back arrow to toolbar    if (getSupportActionBar() != null){        getSupportActionBar().setDisplayHomeAsUpEnabled(true);        getSupportActionBar().setDisplayShowHomeEnabled(true);    }}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {    // handle arrow click here    if (item.getItemId() == android.R.id.home) {        finish(); // close this activity and return to preview activity (if there is any)    }    return super.onOptionsItemSelected(item);}


There are many ways to achieve that, here is my favorite:

Layout:

<android.support.v7.widget.Toolbar    android:id="@+id/toolbar"    android:layout_width="match_parent"    android:layout_height="?attr/actionBarSize"    app:navigationIcon="?attr/homeAsUpIndicator" />

Activity:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);toolbar.setNavigationOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        // back button pressed    }});