onOptionsItemsSelected未在Fragment中使用

时间:2015-07-21 14:20:58

标签: android android-fragments android-actionbar android-listfragment

我正在尝试在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);
        }
    }

2 个答案:

答案 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();
}