0

我有一个应用程序与几个活动。到现在为止,我在它们之间有一个“硬编码”层次结构,所以我在每个(但是启动器活动)中明确设置了android:parentActivityName。但是现在我将设置添加到多个活动的菜单中。有没有办法让AppCompat的ActionBar的“back/up”按钮充当“后退”系统按钮

有没有办法让操作栏功能中的“后退”箭头作为系统后退按钮(在屏幕的底部)?换句话说:如果有一个parentActivityName集,然后它可以追溯到父活动,如果没有,那么它会关闭活动,“蜗居”在过去的活动。

这是我尝试过,但不起作用。如果我不叫actionBar.setDisplayHomeAsUpEnabled(真),那么就在操作栏中没有“返回”箭头,但如果我把它在没有parentActivityName请将清单的活动,然后我得到一个异常时,我点击箭头。

abstract public class BaseActivity extends ActionBarActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(getLayoutResourceId()); 

     final ActionBar actionBar = getSupportActionBar(); 
     if (null != actionBar) { 
      actionBar.setDisplayHomeAsUpEnabled(getDisplayHomeAsUpEnabled()); 
     } 
    } 

    protected abstract int getLayoutResourceId(); 
    abstract protected boolean getDisplayHomeAsUpEnabled(); 

    @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. 
     final int id = item.getItemId(); 
     if (id == android.R.id.home) { 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
     } 
    } 
} 

回答

3

尝试:

if (id == android.R.id.home) { 
     onBackPressed(); 
     return true; 
    } 

上面的代码会打电话给你onBackPressed,所以要小心,如果你overrided它。否则,它将与“后退”系统按钮相同。

+0

这仍然无法帮助我显示android:parentActivityName没有在清单中设置 – Gavriel 2014-12-02 08:22:43

+0

@Gavriel我不使用'android:parentActivity',我只是使用'setDisplayHomeAsUpEnabled(true);'与上面的代码它的工作就像后面的系统按钮 – 2014-12-02 08:30:39

+0

好吧,它实际上工作。现在我可以在每个活动上调用actionBar.setDisplayHomeAsUpEnabled(true)。 – Gavriel 2014-12-02 08:30:40

相关问题