2016-05-26 8 views
0

ナビゲーションビューバーのメニュー項目を動的に作成し、それをswitchcompatウィジェットに関連付けました。私はスイッチをクリックすると、現在私のために起こっていないメニュー項目のクリックと同じメソッドを呼び出すように、メニュー項目にスイッチボタンをバインドしたい。もしそうなら、これはできますか?onCheckedChanged()内の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?? 

} 

答えて

0

onCheckedChanged内部のgetId()関数を(み)メソッド

if(buttonView.getId()==R.id.menuid) 
{ 
//do stuff here 
} 
+0

申し訳ありませんが、私のメニュー項目が動的に追加されています。 –

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; 
    } 
} 
関連する問題