Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在片段生命周期中仅调用一次OnCreateOptions菜单_Android_Android Fragments_Android Menu - Fatal编程技术网

Android 如何在片段生命周期中仅调用一次OnCreateOptions菜单

Android 如何在片段生命周期中仅调用一次OnCreateOptions菜单,android,android-fragments,android-menu,Android,Android Fragments,Android Menu,oncreateoptions菜单每次恢复Fragment时都会被调用。当创建片段时,是否有任何解决方案可以只调用一次创建选项菜单 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.search_menu, menu); final MenuItem searchItem = menu.findI

oncreateoptions菜单
每次恢复
Fragment
时都会被调用。当创建片段时,是否有任何解决方案可以只调用一次创建选项菜单

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.search_menu, menu);
        final MenuItem searchItem = menu.findItem(R.id.action_search);
        final SearchView searchView = (SearchView) searchItem.getActionView();
        searchView.setQueryHint(getString(R.string.search_hint));
        searchItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                return true;
            }

            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                showContacts();
                return true;
            }
        });
    }

它与生命周期挂钩,因此将调用该方法。这并不意味着每次都需要调用代码。设置类级布尔值以确保代码只运行一次。或者检查“getOnActionExpandListener”

if(searchItem.getOnActionExpandListener() == null) {
    searchItem.setOnActionExpandListener.......
}

Android菜单不是这样工作的——每次菜单失效时,整个菜单都会被丢弃,并创建一个新菜单,这就需要重新调用
onCreateOptions菜单()