[英]checkable item in android PopupMenu not working probably
I have a problem in my app when I'm using popup menu whith checkable item. 当我使用可检查项目的弹出菜单时,我的应用程序出现问题。
I wanted to implement multi check item in my popup menu but when clicking one item the menu disappear although I have set the checkable behavior to all 我想在弹出菜单中实现多选项目,但是当我单击一项时,菜单消失了,尽管我将所有行为都设置为可检查
this is the menu layout 这是菜单布局
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="all">
<item android:id ="@+id/sun"
android:checkable="true"
android:title="@string/sun"/>
<item android:id ="@+id/Mon"
android:title="@string/Mon"/>
<item android:id ="@+id/Tus"
android:title="@string/Tus"/>
<item android:id ="@+id/Wed"
android:title="@string/wed"/>
<item android:id ="@+id/Thu"
android:title="@string/Thu"/>
<item android:id ="@+id/fri"
android:title="@string/fri"/>
<item android:id ="@+id/Sat"
android:title="@string/Sat"/>
</group>
and this is the switch statement where I guess that the error is here but I cant find it 这是switch语句,我猜这里是错误,但是我找不到它
PopupMenu popupMenu = new PopupMenu(getBaseContext(), ch_specificDay);
MenuInflater inflater = popupMenu.getMenuInflater();
inflater.inflate(R.menu.weekdays, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.sun:
if(item.isChecked())
{
item.setChecked(false);
sunCheck = false;
}else
{
item.setChecked(true);
sunCheck = true;
}
break;
case R.id.Mon:
if(item.isChecked())
{
item.setChecked(false);
monCheck = false;
}else
{
item.setChecked(true);
monCheck = true;
}
break;
case R.id.Tus:
if(item.isChecked())
{
item.setChecked(false);
TusCheck = false;
}else
{
item.setChecked(true);
TusCheck = true;
}
break;
case R.id.Thu:
if(item.isChecked())
{
item.setChecked(false);
ThrChec= false;
}else
{
item.setChecked(true);
ThrChec = true;
}
break;
case R.id.Wed:
if(item.isChecked())
{
item.setChecked(false);
wenCheck= false;
}else
{
item.setChecked(true);
wenCheck = true;
}
break;
case R.id.Sat:
if(item.isChecked())
{
item.setChecked(false);
satCheck = false;
}else
{
item.setChecked(true);
satCheck = true;
}
break;
case R.id.fri:
if(item.isChecked())
{
item.setChecked(false);
FriCheck = false;
}else
{
item.setChecked(true);
FriCheck = true;
}
break;
default:
break;
}
return true ;
}
});
popupMenu.show();
break;
default:
Here is the solution for you. 这是您的解决方案。
On click of menu Item call a method 单击菜单项时调用方法
keepMenuOpen(item);
This keepMenuOpen is defined like this. 该keepMenuOpen的定义如下。
private void keepMenuOpen(MenuItem item) {
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
item.setActionView(new View(HomeActivity.this));
item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return false;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return false;
}
});
}
终于,我找到了解决方案(有人帮助我在facebook上)我只是将return true更改为false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.