Android 更改选项菜单图标

Android 更改选项菜单图标,android,onclick,android-optionsmenu,Android,Onclick,Android Optionsmenu,假设我有一个选项菜单,如下所示: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_home_page, menu); final MenuItem myActionMenuItem = menu.findItem(R.id.action_search); mSearchView = (SearchView) myActionMe

假设我有一个选项菜单,如下所示:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_home_page, menu);

    final MenuItem myActionMenuItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) myActionMenuItem.getActionView();
    mSearchView.setQueryHint("Enter text to search(min. 3 chars)...");
    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(final String searchQuery) {
            if (!mSearchView.isIconified()) {
                mSearchView.setIconified(true);
            }
            mSearchView.setQuery(searchQuery, false);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            return false;
        }
    });
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        saveState();
        finish();
    } else if (item.getItemId() == R.id.action_bookmark) {
        FragmentAdapter adapter = (FragmentAdapter) mViewPager.getAdapter();
        PageFragment fragment = (PageFragment)adapter.instantiateItem(mViewPager,mViewPager.getCurrentItem());
        fragment.getContent();
        Toast.makeText(this, "Bookmark Added", Toast.LENGTH_SHORT).show();
    }
    return super.onOptionsItemSelected(item);
}
有没有办法检查哪个图标设置为“选项”菜单项并在单击时用另一个图标更改它

以下是选项菜单的xml:

<item
    android:id="@+id/action_bookmark"
    android:title="Bookmark"
    app:showAsAction="always|collapseActionView"
    android:icon="@drawable/ic_bookmark_empty" />


单击后,我想检查书签中的图标并对其进行更改。

您可以使用此代码
菜单.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_bookmark_empty))

如果要检查当前设置了哪个可绘制文件,可以使用此代码

item.getIcon().getConstantState().equals
(getResources().getDrawable(R.drawable.ic_bookmark_empty).getConstantState())
对于设置新的可绘制图形,可以使用以下代码

item.setIcon(R.drawble.ic_bookmark_empty)

您需要在OnOptions ItemSelected中检查以下条件:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        saveState();
        finish();
    } else if (item.getItemId() == R.id.action_bookmark) {

           if(item.getIcon() ==R.drawable.ic_bookmark_empty)
           {
               // call bookmark code
               item.setIcon(R.drawable.ic_bookmark_filled); // set your desired bookmark icon
           } else {
               // call remove bookmark code  
               item.setIcon(R.drawable.ic_bookmark_empty);  
           }

        FragmentAdapter adapter = (FragmentAdapter) mViewPager.getAdapter();
        PageFragment fragment = (PageFragment)adapter.instantiateItem(mViewPager,mViewPager.getCurrentItem());
        fragment.getContent();
        Toast.makeText(this, "Bookmark Added", Toast.LENGTH_SHORT).show();
    }
    return super.onOptionsItemSelected(item);
}

我可以在onCreate中更改菜单项图标吗?即,如果我从列表中单击书签,它将在webview中显示我的数据,书签图标已填充