获取工具栏中的MenuItem的ID

无效74

我有一个带有以下代码的“菜单”资源“ menu_test”:

<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".TestActivity" >

<item android:id="@+id/hideshow"
    android:title="Body visbility"
    android:orderInCategory="100"
    android:icon="@drawable/showicon"
    app:showAsAction="always" />

</menu>

在我的activity.java文件中,将“ onCreate”函数中的工具栏膨胀,并添加一个点击侦听器:

private Toolbar toolbar;
...
toolbar = (Toolbar)findViewById(R.id.toolbarId);
toolbar.inflateMenu(R.menu.menu_test);
toolbar.setOnMenuItemClickListener(this);

我想获取“ hideshow”的ID并更改图标:

testItem = (MenuItem) toolbar.findViewById(R.id.hideshow);
testItem.setIcon(R.drawable.hideicon);

但是,在第一行获取ID时,应用崩溃。在点击侦听器功能中,它可以正常运行,因为ID是随点击内部提供的:

public boolean onMenuItemClick(MenuItem item)
    item.setIcon(R.drawable.hideicon);

那么,如何更改onCreate函数中的图标?(“ findItem”不起作用,因为工具栏不是菜单)

阿宾·格莱米安(Abtin Gramian)

我可能会更容易以编程方式添加菜单项,因此您可以维护对它们的引用:

public class MainActivity extends AppCompatActivity {

    private static final int MENU_SETTINGS = Menu.FIRST;
    MenuItem menuItem;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        menuItem = menu.add(0, MENU_SETTINGS, 0, R.string.action_settings).setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case MENU_SETTINGS:
                // DO SOMETHING
                break;
        }
        return super.onOptionsItemSelected(item);
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

工具栏MenuItem错误

来自分类Dev

工具栏MenuItem错误

来自分类Dev

在ShareAction MenuItem中未使用的AppCompat工具栏popupTheme

来自分类Dev

Android工具栏MenuItem LowerCase

来自分类Dev

Android工具栏MenuItem LowerCase

来自分类Dev

如何获取工具栏菜单项的ID?

来自分类Dev

工具栏徽标ID

来自分类Dev

获取CKEitor中单击的工具栏按钮的状态

来自分类Dev

无法获取工具栏以显示在Node Webkit中

来自分类Dev

在工具栏和布局中获取高度

来自分类Dev

DialogFragment中的工具栏

来自分类Dev

IContributionItem 中的工具栏

来自分类Dev

Android工具栏将MenuItem的图标移到右侧

来自分类Dev

工具栏显示在导航栏中

来自分类常见问题

如何从片段获取工具栏?

来自分类Dev

工具栏DisplayHomeAsUp Btn ID

来自分类Dev

工具栏DisplayHomeAsUp Btn ID

来自分类Dev

在工具栏中获取工具条菜单项的名称

来自分类Dev

更改工具栏中的标题颜色?

来自分类常见问题

在Android工具栏中创建按钮

来自分类Dev

禁用/隐藏NestedList中的工具栏

来自分类Dev

在Emacs Lisp中更改工具栏

来自分类Dev

工具栏中的组合框

来自分类Dev

ubuntu touch工具栏中的按钮

来自分类Dev

Searchview未显示在工具栏中

来自分类Dev

在Android工具栏中显示图标

来自分类Dev

在Android工具栏中显示图标

来自分类Dev

从工具栏中删除图标

来自分类Dev

在工具栏中添加布局