gpt4 book ai didi

android getSupportActionBar() 在 fragment 中返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:42 32 4
gpt4 key购买 nike

更新

我没有提到任何关于使用 ToolBar 的事情与 ActionBarActivity。这就是我总是得到空指针异常的原因。对于那些面临同样问题的人 please refere this answer


我有这个 fragment 代码来改变 fragment 改变时支持操作栏的外观。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
mActionBar = ((ActionBarActivity)getActivity()).getSupportActionBar();
SpannableString s = new SpannableString("Dashboard");
s.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.app_blue_text)), 0, s.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
s.setSpan(new TypefaceSpan(getActivity(), "Optima-Regular.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

if( null!= mActionBar){
mActionBar.setElevation(0);
mActionBar.setTitle(s);
}
}

我已经提到了关于如何解决这个错误的先前/类似问题。这些解决方案建议更改 onActivityCreated() 方法中的操作栏外观。我也尝试了 onAttach()。似乎没有一个工作。我使用支持操作栏来保持向后兼容性。 Activity 也相应地转换为 ActionBarActivity

完整的代码非常冗长,所以我跳过了发布。如果需要,我可以发布完整的代码并使用更多详细信息更新问题。

错误日志

Caused by: java.lang.NullPointerException
at com.example.testapp.fragments.NavigationDrawerFragment.onActivityCreated(NavigationDrawerFragment.java:215)

第 215 行是:mActionBar.setElevation(0);

最佳答案

我错过了在这个问题中提到的更多信息。这就是其他好的 SO 用户无法正确回答的原因。所以在这里我自己回答。

我用过 ToolBar代替常规的 ActionBar。当您使用 ToolBar 时,您必须将其设置为 ActionBar。所以通过做 -

toolbar = (Toolbar) getActivity().findViewById(toolbarId);
((ActionBarActivity)getActivity()).setSupportActionBar(toolbar);

然后我可以通过 - 轻松更改标题和外观 -

((ActionBarActivity)getActivity()).getSupportActionBar().setTitle(s);

在 fragment 中实际使用 actionbar 之前,请记住将 toolbar 设置为 actionbar。

关于android getSupportActionBar() 在 fragment 中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29123270/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com