我正在尝试在ListFragment类的菜单栏中添加一个按钮。当我点击按钮时,没有任何反应。在类中永远不会调用onCreateOptionsMenu
方法。我已经尝试了一切来使它工作,但它仍然无法正常工作。有没有人有任何解决方案?
我在下面附上了我的代码:
public class FragmentZero extends ListFragment {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// use your custom layout
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_layout_zero, container, false);
oslist = new ArrayList<HashMap<String, String>>();
new JSONParse().execute();
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Inflate the menu items for use in the action bar
inflater.inflate(R.menu.main_fragment_zero, menu);
super.onCreateOptionsMenu(menu, inflater);
}
public boolean onOptionsItemsSelected(MenuItem item) {
// Take appropriate action for each action item click
switch (item.getItemId()) {
case R.id.action_refresh:
// check for updates action
RefreshButton();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:3)
将setHasOptionsMenu(true)
添加到您的onCreateView()
方法,然后将其移至OnCreate()
。
答案 1 :(得分:0)
所以这是一个非常愚蠢的错误我正在解决它,感谢大家的帮助。
我拼写错误onOptionItemSelected
。我在项目之后添加了额外的's'。
一旦我纠正了这个,该方法就开始起作用了。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_refresh:
RefreshButton();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void RefreshButton() {
oslist = new ArrayList<HashMap<String, String>>();
new JSONParse().execute();
}