setTitle在片段中不起作用

JDN*_*N96 8 android android-titlebar android-fragments android-actionbar

我有一个片段,我尝试更改操作栏的标题.这一直有效,直到我添加setHasOptionsMenu(true)到片段中.我怎么解决这个问题?因为我需要optionsmenu片段中的.

在片段中

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    ((MainActivity)getActivity()).setActionBarTitle(getString(R.string.title_view_tree));
    setHasOptionsMenu(true);
    return inflater.inflate(R.layout.fragment_view_tree, container, false);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_view_tree,menu);
    super.onCreateOptionsMenu(menu,inflater);

}
Run Code Online (Sandbox Code Playgroud)

在MainActivity中:

public void setActionBarTitle(String title) {
    getSupportActionBar().setTitle(title);
}
Run Code Online (Sandbox Code Playgroud)

当我setHasOptionsMenu(true)通过使用//然后actionbar正确使用更改的标题禁用.

Man*_*Man 6

从Fragment的onCreateOptionMenu调用setActionBarTitle .

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_main4, menu);

((MainActivity)getActivity()).setActionBarTitle(getString(R.string.title_view_tree));
        super.onCreateOptionsMenu(menu, inflater);
    }
Run Code Online (Sandbox Code Playgroud)

我建议使用回调接口与活动进行交互.


And*_*oud 0

在要为其设置标题的片段中:只需调用

getActivity().setTitle("片段 X");

@Override
public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        getActivity().setTitle("Fragment X");
}
Run Code Online (Sandbox Code Playgroud)