我需要放置两个图标来在工具栏android中创建切换按钮功能,为此,我在菜单中创建了两个图标:
<item
android:id="@+id/action_connect_off"
android:icon="@drawable/enchufe_off"
android:orderInCategory="103"
android:title="Item"
app:showAsAction="always" />
<item
android:id="@+id/action_connect_on"
android:icon="@drawable/enchufe_on"
android:orderInCategory="103"
android:title="Item"
app:showAsAction="always"
android:visible="false"/>
在我的MainActivity中,我有:
Boolean flagConection = false;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_connect_off) {
flagConection = true;
return true;
}
if (id == R.id.action_connect_on) {
flagConection = false;
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem IconOFF = menu.findItem(R.id.action_connect_off);
MenuItem IconON = menu.findItem(R.id.action_connect_on);
if (flagConection){
IconOFF.setVisible(false);
IconON.setVisible(true);
}
else {
IconOFF.setVisible(true);
IconON.setVisible(false);
}
return super.onPrepareOptionsMenu(menu);
}
但我无法使其正常运行,每次我按下图标action_connect_off时,都会检测到该图标,但图标不会更改状态
您需要通知系统选项菜单的状态需要更新。在您修改时invalidateOptionsMenu()
或在supportInvalidateOptionsMenu()
任何时候添加呼叫flagConection
。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_connect_off) {
flagConection = true;
invalidateOptionsMenu();
return true;
}
if (id == R.id.action_connect_on) {
flagConection = false;
invalidateOptionsMenu();
return true;
}
return super.onOptionsItemSelected(item);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句