gpt4 book ai didi

android - 防止选项菜单关闭 OptionItemSelected

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:18 25 4
gpt4 key购买 nike

我有一个选项菜单,里面有一堆复选框。我想打开或关闭其中的一堆,但每次我只选中一个时菜单都会自动关闭。我可以在选择项目后阻止菜单关闭吗?我还想控制关闭的时间和阻止的时间。

Activity.cs(不包括与选项菜单无关的所有内容)

public class Activity: ReactiveActivity<ViewModel>, IAppCompatCallback
{

public override bool OnCreateOptionsMenu(IMenu menu)
{
var inflater = MenuInflater;
inflater.Inflate(Resource.Menu.actions, menu);
return true;
}

public override bool OnOptionsItemSelected(IMenuItem item)
{
if(item.ItemId == Resource.Id.action_settings) {
StartActivity(typeof(SettingsActivity));
}
else {
//Code changing the view based on selections
}
return base.OnOptionsItemSelected(item);
}
}

Action .xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Choose options...">
<menu>
<group android:checkableBehavior="all">
<item android:id="@+id/checkOption1"
android:title="Option 1"
android:checked="true" />
<item android:id="@+id/checkOption2"
android:title="Option 2"
android:checked="true" />
<item android:id="@+id/checkOption3"
android:title="Option 3"
android:checked="true" />
<item android:id="@+id/checkOption4"
android:title="Option 4"
android:checked="true" />
<item android:id="@+id/checkOption5"
android:title="Option 5"
android:checked="true" />
<item android:id="@+id/checkOption6"
android:title="Option 6"
android:checked="true" />
<item android:id="@+id/checkOption7"
android:title="Option 7"
android:checked="true" />
</group>
</menu>
</item>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:showAsAction="never"/>
</menu>

最佳答案

I got an options menu with a bunch of checkboxes in it. I'd like to check a bunch of them on or off, but the menu closes automaticly every time I check just one. Can I prevent the menu from closing when an item has been selected? I'd also want to control when the closing happens and when it's prevented.

对于菜单,我没有找到控制关闭行为的正确方法。

但根据您的要求,Dialog 是更好的选择:

  1. 删除 action.xml 中的子菜单并为 Choose Options... 添加一个 id 项目:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="Choose options..." android:id="@+id/chooseOption"></item>
    <item android:id="@+id/action_settings"
    android:title="Settings"
    android:showAsAction="never"/>
    </menu>
  2. AlertDialog 一起创建您的 DialogFragment:

    public class MyDialogFragment:DialogFragment
    {
    string[] Items { get; set; }
    bool[] CheckedItems { get; set; }

    public MyDialogFragment(string[] items,bool[] checkedItems)
    {
    Items = items;
    checkedItems = checkedItems;
    }
    public override Dialog OnCreateDialog(Bundle savedInstanceState)
    {
    AlertDialog.Builder builder = new AlertDialog.Builder(this.Activity);
    builder.SetMultiChoiceItems(Items, CheckedItems, new DialogItemClickhandler());
    // Create the AlertDialog object and return it
    return builder.Create();
    }
    }

    public class DialogItemClickhandler : Java.Lang.Object, IDialogInterfaceOnMultiChoiceClickListener
    {
    public void OnClick(IDialogInterface dialog, int which, bool isChecked)
    {
    //Item Click Implementation
    }
    }
  3. 当用户单击 Choose Options... 菜单项时打开对话框:

    public class MainActivity : Activity
    {
    protected override void OnCreate(Bundle bundle)
    {
    base.OnCreate(bundle);
    SetContentView (Resource.Layout.Main);
    }


    public override bool OnCreateOptionsMenu(IMenu menu)
    {
    MenuInflater.Inflate(Resource.Menu.Actions, menu);
    return true;
    }

    public override bool OnMenuItemSelected(int featureId, IMenuItem item)
    {
    switch (item.ItemId)
    {
    case Resource.Id.chooseOption:
    OpenDialogFragment();//Open the dialog
    break;
    default:break;
    }
    return true;
    }

    private void OpenDialogFragment()
    {

    //init the Dialog items
    string[] items = new string[] {
    "Options 1",
    "Options 2",
    "Options 3",
    "Options 4",
    "Options 5",
    "Options 6"
    };

    bool[] checkedItems = new bool[] {
    true,
    false,
    true,
    false,
    true,
    false
    };
    MyDialogFragment dialog = new MyDialogFragment(items,checkedItems);
    dialog.Show(FragmentManager, "tag");
    }
    }

关于android - 防止选项菜单关闭 OptionItemSelected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42931293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com