有没有办法让AppCompat的ActionBar的“后退/上升”按钮充当“后退”系统按钮

时间:2014-12-02 08:18:07

标签: android back-button android-appcompat android-actionbar-compat android-homebutton

我有一个带有几个活动的应用程序。到目前为止,我之间有一个“硬编码”层次结构,所以我在每个(但启动器活动)中明确设置了android:parentActivityName。但是现在我将设置添加到多个活动的菜单中。

有没有办法让操作栏中的“后退”箭头作为系统的后退按钮(位于屏幕底部)?换句话说:如果设置了parentActivityName,那么它将返回到父活动,如果没有,则关闭活动并“返回”前一个活动。

这是我尝试过的,但不起作用。如果我没有调用actionBar.setDisplayHomeAsUpEnabled(true),那么操作栏中没有“后退”箭头,但如果我在一个没有在Manifest中设置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;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

尝试:

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

上面的代码会调用您的onBackPressed,因此如果您覆盖它,请小心谨慎。否则,它会像" back"系统按钮。