0

我正在使用新的Toolbar,我的问题是如何提供setDisplayHomeAsUpEnabled导航抽屉?

通常我在使用 old ActionBarby 时会这样做,

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

但是当我在 new 中使用它时toolbar,它会说

方法调用 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 可能会导致空指针异常。

在此处输入图像描述

我应该知道如何在 Fragment 中实现上述目标,因为我现在正在使用 Fragment 进行重用。

4

3 回答 3

2

getSupportActionBar()可能是null

通过检查返回的内容来避免任何可能的错误getSupportActionBar()

final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
于 2015-05-07T13:22:29.473 回答
0

如果您使用的是 ActionBarActivity,那么您可以告诉 Android 将 Toolbar 用作当前代码的 ActionBar。

对于片段的后退导航,请使用:

((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);

确保使用以下方法将您的片段添加到后台堆栈:

.addToBackStack("Tag")

在您的片段交易中。

如果您不使用 ActionBarActivity,请在工具栏上添加一个后退箭头可绘制图标并使用:

mActionBar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back));
mActionBar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //What to do on back clicked
    }
});
于 2015-05-07T13:41:07.283 回答
0

这里有什么问题?如果您使用支持工具栏(在 xml 布局中)并且您之前android.support.v7.widget.Toolbar忘记调用,那么您当然会得到. 如果你设置它,那么没有什么可担心的......setSupportActionBar(mToolbar);getSupportActionBar().setDisplayHomeAsUpEnabled(true);Null Pointer Exception

于 2018-03-20T09:07:56.417 回答