我正在使用新的Toolbar
,我的问题是如何为导航抽屉提供setDisplayHomeAsUpEnabled
?
通常我在使用旧的ActionBar
时,
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
但是当我在新toolbar
中使用相同内容时,它会说
方法调用 getSupportActionBar()setDisplayHomeAsUpEnabled(真)。可能会导致无效 指针异常。
我应该知道如何在Fragment中实现上述功能,因为我现在正在使用Fragment来重复使用。
答案 0 :(得分: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);
}
答案 1 :(得分:0)
如果您使用的是ActionBarActivity,那么您可以告诉Android使用工具栏作为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
}
});
答案 2 :(得分:0)
这是什么问题?如果您使用支持工具栏(xml布局中为android.support.v7.widget.Toolbar
)而忘记在setSupportActionBar(mToolbar);
之前致电getSupportActionBar().setDisplayHomeAsUpEnabled(true);
,那么您将获得Null Pointer Exception
。如果你设置它,那么没有什么可担心的......