如何获取与onCheckedChanged()内的switchcompat(复合按钮)相关的菜单项?

时间:2016-05-26 12:40:41

标签: android

我为导航视图栏动态创建了一个菜单项,并将其与switchcompat小部件相关联。我想将切换按钮绑定到菜单项,以便单击该开关将调用与菜单项单击相同的方法,这对于我来说当前没有发生。可以这样做,如果是的话,如何?

非常感谢提前。

final MenuItem scanMenuItem = navMenu.getItem(parentMenuItem)
                         .getSubMenu().add(childMenuItem,itemId,orderId,menuTitle)
                         .setIcon(R.drawable.ic_menu_cast)
                         .setActionView(R.layout.compat_switch_button);
...
...

compatSwitch.setOnCheckedChangeListener(MainActivity.this);

...
...
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

   ?? How can I get menuItem the switch button is associated with in this block??

}

2 个答案:

答案 0 :(得分:0)

在onCheckedChanged()方法

中尝试getId()函数
if(buttonView.getId()==R.id.menuid)
{
//do stuff here
}

答案 1 :(得分:0)

虽然我不知道这是否是解决问题的最佳方法,但我通过使用名为setTag()&的方法来实现它。 switchCompat的getTag()。

    compactSwitch.setTag(item.getItemId()); --> the menu item id.
    compactSwitch..setOnCheckedChangeListener(MainActivity.this);
    ...

     @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    int viewId = buttonView.getId();

    switch(viewId){
        case R.id.switch_compat:
    final int anInt = Integer.parseInt(buttonView.getTag().toString()); --> fetch the menuItem Id.
        break;
    }
}