相关疑难解决方法(0)

没有锚点,不能使用MenuPopupHelper

我想加PopupMenu我的MenuItem.

menu.xml文件

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/date"
        app:showAsAction="ifRoom|withText"
        android:title="Date"
        android:visible="true"/>
    <item
        android:id="@+id/category"
        app:showAsAction="ifRoom|withText"
        android:title="Category"
        android:visible="true"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

当我点击时MenuItem我调用此代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.filter_action) {
        showPopup(item.getActionView());
    }
    return super.onOptionsItemSelected(item);
}

private void showPopup(View v) {
    PopupMenu popup = new PopupMenu(getActivity(), v);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.filter_billing_menu, popup.getMenu());
    popup.show();
}
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

 java.lang.IllegalStateException: MenuPopupHelper cannot be used without an anchor
Run Code Online (Sandbox Code Playgroud)

我怎么解决它?

android popupmenu optionmenu android-toolbar

7
推荐指数
2
解决办法
5559
查看次数

在ActionBar中有两个单选组不起作用,但附加一个弹出菜单也不起作用

我正在编写一个Android应用程序,用户必须选择在图表上显示的方式和内容.这些选项以两个单选菜单组(单选按钮)表示,两者都可以从操作栏访问.

第一组工作正常.它添加在我的ActionBar XML的末尾,如下所示:

<group android:checkableBehavior="single" android:showAsAction="never" >
    <item android:id="@+id/menu_choice_1" android:title="Choice 1" />
    <item android:id="@+id/menu_choice_2" android:title="Choice 2" android:checked="true"/>
</group>
Run Code Online (Sandbox Code Playgroud)

<group>但是,当我在第一个下面添加第二个时,两个合并为一个单选列表.换句话说,两个列表中的选项一起呈现,如果我选择与第一个列表相关的选项,我就不能从第二个列表中选择任何内容.

相反,我想要两个单独的单选按钮列表.我的下一个想法是添加ActionBar的另一个按钮,当点击它时,将启动一个弹出菜单.但是当我点击按钮时,我得到一个IllegalStateException,说我的"MenuPopupHelper不能在没有锚点的情况下使用".

这是我尝试的弹出式菜单代码:

在我的ActionBar XML中:

<item android:id="@+id/menu_openothermenu"
  android:title="@string/openothermenustr"
  android:showAsAction="always" />
Run Code Online (Sandbox Code Playgroud)

我的新菜单XML:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item android:id="@+id/menu_2_choice_1" android:title="@string/2_choice_1" />
        <item android:id="@+id/menu_2_choice_2" android:title="@string/2_choice_2" android:checked="true"/>
    </group>
</menu>
Run Code Online (Sandbox Code Playgroud)

我的活动代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    SharedPreferences.Editor editor;

    switch (item.getItemId()) {
    case R.id.openothermenu:
        Menu m = …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-menu android-actionbar drop-down-menu

5
推荐指数
1
解决办法
5386
查看次数