在Android 4.1.2上,ActionBar Up按钮未按预期运行

在Android 4.1.2上,ActionBar Up按钮未按预期运行,android,navigation,actionbarsherlock,Android,Navigation,Actionbarsherlock,我有4项活动,如: MainActivity -> Activity B -> Activity C \ Activity A / 左侧的活动是右侧活动的父级 我正在使用SherlockActionBar提供向上导航 “默认”路径是MainActivity->ActivityB>ActivityC,它在每部手机上都能正常工作,我可以进入C>B>Main 在安卓2.3上,当我进入Main>A>C时,向上导航将进入C>B>Main,这是预期的 在Androi

我有4项活动,如:

MainActivity -> Activity B -> Activity C
              \ Activity A /
左侧的活动是右侧活动的父级

我正在使用SherlockActionBar提供向上导航

“默认”路径是
MainActivity->ActivityB>ActivityC
,它在每部手机上都能正常工作,我可以进入
C>B>Main

在安卓2.3上,当我进入
Main>A>C
时,向上导航将进入
C>B>Main
,这是预期的

在Android 4.1.2(Galaxy S3)上,使用相同的路径
Main>A>C
,向上导航没有
C>Main
,它完全错过了
活动B
,即逻辑父级

下面是我的一些
AndroidManifest.xml
(我删除了包名)


如果您正在使用选项卡导航,则以下代码可以帮助您:

public class MainActivity extends ActionBarActivity implements TabListener{

    ActionBar actionBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          actionBar = getSupportActionBar();
          actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
          actionBar.setDisplayHomeAsUpEnabled(true);
          tab=actionBar.newTab();
          tab.setText("HOME");
          tab.setTabListener(this);
          actionBar.addTab(tab);

        }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
             case android.R.id.home:
                if (android.os.Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH){
                    actionBar.setSelectedNavigationItem(0);
                }else{
                    Intent upIntent = new Intent(this, MainActivity.class);
                    NavUtils.navigateUpTo(this, upIntent);
                }
            return true;
         }
         return super.onOptionsItemSelected(item);
    }
}
public class MainActivity extends ActionBarActivity implements TabListener{

    ActionBar actionBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          actionBar = getSupportActionBar();
          actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
          actionBar.setDisplayHomeAsUpEnabled(true);
          tab=actionBar.newTab();
          tab.setText("HOME");
          tab.setTabListener(this);
          actionBar.addTab(tab);

        }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
             case android.R.id.home:
                if (android.os.Build.VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH){
                    actionBar.setSelectedNavigationItem(0);
                }else{
                    Intent upIntent = new Intent(this, MainActivity.class);
                    NavUtils.navigateUpTo(this, upIntent);
                }
            return true;
         }
         return super.onOptionsItemSelected(item);
    }
}