在Android 4.1.2上,ActionBar Up按钮未按预期运行
我有4项活动,如:在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
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);
}
}