在我的应用程序中,我只有一个活动(扩展了ActionBarActivity)和各种碎片(扩展了Fragment)。
当用户单击菜单选项时,应用程序将更改片段。
此刻我想改变de title和ActionBar的背景颜色。
当我尝试ActionBar actionBar = getActivity().getActionBar();
时,我得到了一个空例外。
我正在使用支持库,并且在活动中我成功使用android.support.v7.app.ActionBar actionBar = getSupportActionBar();
。
片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.material_cadastro, container, false);
viewHolder = new MaterialViewHolder(view);
ActionBar actionBar = getActivity().getActionBar();
actionBar.setTitle(R.string.inserir_material);
return view;
}
Debuging我得到了Activity返回OK,但ActionBar为null:
getActivity() = {br.com.americocarelli.vendasfacil.ui.MenuPrincipal@3b56766f}
getActivity().getActionBar() = null
答案 0 :(得分:3)
覆盖您的onAttach(Activity)
,然后将Activity
投放到ActionBarActivity
,您就可以获得ActionBar
。
像:
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
ActionBar actionBar=((ActionBarActivity)activity).getSupportActionBar();
}
答案 1 :(得分:1)
由于您使用支持库(ActionBarActivity),因此使用((ActionBarActivity)getActivity()).getSupportActionBar();
可以访问支持操作栏。
答案 2 :(得分:0)
您可能正在使用构建工具> = 21构建它,该版本会导致activity.getActionBar()返回null,您应该使用getSupportActionBar()。 编辑:如果你在这一行得到NPE:getActivity()。 ...然后你可能在片段附加到活动之前或之后引用它。你可以粘贴你正在使用它的上下文(地点,功能)吗?