我有一个带有菜单的 fragment :
public class FragmentA extends Fragment {
public FragmentA() {
setHasOptionsMenu(true);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.activity_main_actions, menu);
super.onCreateOptionsMenu(menu, inflater);
}
}
我想更改菜单但它不起作用并保留旧的操作菜单
fragment B 与上面相同,但具有不同的 inflate XML 菜单。
public class FragmentB extends Fragment {
public FragmentB() {
setHasOptionsMenu(true);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.**action_ranking**, menu);
super.onCreateOptionsMenu(menu, inflater);
}
}
编辑:
对于不同的 fragment 使用不同的菜单布局以及对主要 Activity 和不同的 id 使用 1 个菜单布局可能很有用
最佳答案
将 setHasOptionsMenu(true)
放入构造函数中并膨胀 fragment 特定菜单。
public class FragmentA extends Fragment {
public FragmentA() {
setHasOptionsMenu(true);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fragmenta_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
}
主要 Activity 中的菜单
public class MainActivity extends Activity {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
}
关于java - 如何更改不同 fragment 中的选项菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338937/