Clicking app icon doesn't trigger onOptionsItemSelected()
Asked Answered
C

3

25

I'm currently working on an Android app. I would like to use the app icon in the action bar to navigate to the "home" activity. I read on this page that all that needs to be done is to add an onOptionsItemSelected and look for the id android.R.id.home.

This is the code that I have implemented in my activity where I want to press the app icon to return to HomeActivity.

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

However, nothing happens. When debugging, I can see that clicking the icon doesn't trigger the onOptionsItemSelected() at all. Do I have to do something with the icon somewhere? As of now, it's all default, just this in the AndroidManifest.xml

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
Catharina answered 21/1, 2012 at 12:58 Comment(3)
I have only ever tried responding to the action bar icon in an activity that had an options menu. Temporarily add an options menu and see if that changes the behavior that you see.Nessy
Also consider passing the flag FLAG_ACTIVITY_SINGLE_TOP which avoids restarting the activity.Highpowered
My issue was I was in onOptionsItemSelected I had R.id.home instead of android.R.id.home drove me nuts!Gunn
I
38

For packages targetting API level 14 onwards, you need to enable the home button by calling setHomeButtonEnabled()

In your onCreate, add the following:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    getActionBar().setHomeButtonEnabled(true);
}
Inpatient answered 21/1, 2012 at 13:2 Comment(1)
Also wanted to add this for those using ActionBarSherlock. getSupportActionBar().setHomeButtonEnabled(true);Rimose
N
4

If you use Android new support-actionbar (AppCompat) you need to make both calls.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    getActionBar().setHomeButtonEnabled(true);
}
getSupportActionBar().setHomeButtonEnabled(true);
Nomism answered 11/11, 2013 at 17:7 Comment(0)
S
0

i dont know if we have the same problem.

but, i was on that problem and now solved..

do you add

case android.R.id.home:
    Intent intent = new Intent(this, HomeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    return true;

in HomeActivity ? this is false..

you should put that code on your secondActivity.. because your home button on secondActivity, not HomeActivity

case android.R.id.home:
     NavUtils.navigateUpFromSameTask(this);
     true;

hope this helps you

Skillful answered 7/1, 2017 at 20:36 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.