背景:我需Customize
ToolBar
Fragment
setCustomToolBarForFragment
所以我使用Fragment
方法来实现这个目标(问题发生在里面片段B Fragment
A - > Fragment
B)
问题:第一次创建setCustomToolBarForFragment
B private void setCustomToolBarForFragment() {
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
// CustomView
View customToolBar =
getActivity().getLayoutInflater().inflate(R.layout.toolbar_custom_view, null);
((TextView) customToolBar.findViewById(R.id.tool_bat_title)).setText("Filter Criteria");
((ImageView) customToolBar.findViewById(R.id.icon_left)).setVisibility(View.GONE);
((ImageView) customToolBar.findViewById(R.id.icon_right)).setVisibility(View.GONE);
toolbar.removeAllViews();
toolbar.inflateMenu(R.menu.menu_event_detail);
toolbar.addView(customToolBar);
}
按预期工作,但第二次没有。
片段B首次创建(A-> B):
片段B第二次创建(A-> B)
setCustomToolBarForFragment [code] :
setCustomToolBarForFragment
注意: onActivityCreated
来自.z-index-0{
index: 0;
}
答案 0 :(得分:0)
尝试在setCustomToolBarForFragment()
或片段的onResume()
或onCreate()
中调用您的方法onCreatView()
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setCustomToolBarForFragment();
}
问题的原因是onActivityCreated()
正如名称所述,这是在活动onCreate()
完成后调用的。
所以我认为当你恢复片段时它不会改变你的Ui。
答案 1 :(得分:0)
工具栏有
菜单private ActionMenuView mMenuView
。当您致电.inflateMenu()
时,内部工具栏调用ensureMenuView()
,如果尚未创建,则创建menuView并添加视图:
private void ensureMenuView() {
if (mMenuView == null) {
mMenuView = new ActionMenuView(getContext());
.........
addSystemView(mMenuView, false);
}
}
当您调用toolbar.removeAllViews()
时,工具栏会删除mMenuView但不会使其为null。因此,下次调用inflateMenu()
时,menuView已经创建,不会再次添加到工具栏中。您必须在不使用removeAllViews()
;