如何使用复选框在片段内的弹出菜单中显示所选项目?
How to show the selected item in popup menu which is inside a fragment using a check box?
我正在使用弹出菜单的图像按钮来弹出,一切正常,但是当我 select 菜单中的一个项目时,该项目被 select 编辑并且不显示selection 以便我可以识别 selected item.The 复选框即使在 selection
之后仍未选中
menu_icon_img=myView.findViewById(R.id.Id_customer_over_flow);
menu_icon_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (getActivity() != null) {
PopupMenu popup = new PopupMenu(getActivity(), v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.sort_menu_items, popup.getMenu());
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.select_name_a_z:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
case R.id.select_name_z_a:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
default:
return false;
}
}
});
}
}
XML
<menu xmlns:android="http://schemas.android.com/apk/res/android"
>
<group
android:checkableBehavior="single"
>
<item
android:id="@+id/select_name_a_z"
android:title="@string/name_a_z"
android:checkable="true"
/>
<item
android:id="@+id/select_name_z_a"
android:title="@string/name_z_a"
android:checkable="true"
/>
</group>
</menu>
工具栏菜单应该在您点击弹出窗口时导航到指定的活动或片段 up.I 我不确定是什么问题,但是一旦您点击任何 MenuItem,它就会导航到给定的 Intent 关联以 id 为例,
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.select_name_a_z:
Intent intent=new Intent(MainActivity.this,SecondActivity.this);
startActivity(intent);
return true;
如果您使用的是可检查的菜单项,请更改以下代码
case R.id.select_name_z_a:
if (item.isChecked())
item.setChecked(false);
else item.setChecked(true);
return true;
喜欢
if (!item.isChecked()) item.setChecked(true);
因为item.ischecked()在开始状态为假
对上面的代码做了一些修改,试试这个
menu_icon_img=findViewById(R.id.Id_customer_over_flow);
popup = new PopupMenu(getApplicationContext(), menu_icon_img);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.sort_menu_items, popup.getMenu());
menu_icon_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (this != null) {
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Menu menu = popup.getMenu();
for(int i = 0;i<menu.size();i++){
menu.getItem(i).setChecked(false);
}
item.setChecked(true);
return true;
}
});
}
}
});
也适用于菜单集中的所有项目:
android:checkable="true"
问题是您正在通过图像视图的 onClick 创建弹出菜单。每当发生点击事件时,都会创建一个新的弹出菜单实例。
避免这种情况在 onCreate 方法中启动弹出菜单。并从 onClick() 方法调用 popup.show()。
我正在使用弹出菜单的图像按钮来弹出,一切正常,但是当我 select 菜单中的一个项目时,该项目被 select 编辑并且不显示selection 以便我可以识别 selected item.The 复选框即使在 selection
之后仍未选中menu_icon_img=myView.findViewById(R.id.Id_customer_over_flow);
menu_icon_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (getActivity() != null) {
PopupMenu popup = new PopupMenu(getActivity(), v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.sort_menu_items, popup.getMenu());
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.select_name_a_z:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
case R.id.select_name_z_a:
if (item.isChecked()) item.setChecked(false);
else item.setChecked(true);
return true;
default:
return false;
}
}
});
}
}
XML
<menu xmlns:android="http://schemas.android.com/apk/res/android"
>
<group
android:checkableBehavior="single"
>
<item
android:id="@+id/select_name_a_z"
android:title="@string/name_a_z"
android:checkable="true"
/>
<item
android:id="@+id/select_name_z_a"
android:title="@string/name_z_a"
android:checkable="true"
/>
</group>
</menu>
工具栏菜单应该在您点击弹出窗口时导航到指定的活动或片段 up.I 我不确定是什么问题,但是一旦您点击任何 MenuItem,它就会导航到给定的 Intent 关联以 id 为例,
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.select_name_a_z:
Intent intent=new Intent(MainActivity.this,SecondActivity.this);
startActivity(intent);
return true;
如果您使用的是可检查的菜单项,请更改以下代码
case R.id.select_name_z_a:
if (item.isChecked())
item.setChecked(false);
else item.setChecked(true);
return true;
喜欢
if (!item.isChecked()) item.setChecked(true);
因为item.ischecked()在开始状态为假
对上面的代码做了一些修改,试试这个
menu_icon_img=findViewById(R.id.Id_customer_over_flow);
popup = new PopupMenu(getApplicationContext(), menu_icon_img);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.sort_menu_items, popup.getMenu());
menu_icon_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (this != null) {
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Menu menu = popup.getMenu();
for(int i = 0;i<menu.size();i++){
menu.getItem(i).setChecked(false);
}
item.setChecked(true);
return true;
}
});
}
}
});
也适用于菜单集中的所有项目:
android:checkable="true"
问题是您正在通过图像视图的 onClick 创建弹出菜单。每当发生点击事件时,都会创建一个新的弹出菜单实例。
避免这种情况在 onCreate 方法中启动弹出菜单。并从 onClick() 方法调用 popup.show()。