Android - ActionBar - PopupMenu - 错误

Android - ActionBar - PopupMenu - Error

我在 ActionBar 中创建弹出菜单。

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;
import android.widget.PopupMenu;

public class MainActivity extends Activity
        implements PopupMenu.OnMenuItemClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
        //return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_search:
                //openSearch();
                return true;
            case R.id.action_settings:
                View menuItemView = findViewById(R.id.action_settings);
                PopupMenu popup = new PopupMenu(this, menuItemView);
                popup.inflate(R.menu.menu_popup);
                popup.show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_popup_ascending:
                //archive(item);
                return true;
            case R.id.action_popup_descending:
                if (item.isChecked()) item.setChecked(false);
                else item.setChecked(true);
                return true;
            default:
                return false;
        }
    }
}

menu_main.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_search_white_24dp"
        android:title="@string/action_search"
        android:showAsAction="ifRoom" />
    <item
        android:id="@+id/action_settings"
        android:icon="@drawable/ic_more_vert_white_24dp"
        android:title="@string/action_settings"
        android:showAsAction="always" />
</menu>

menu_popup.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group
        android:id="@+id/group_delete"
        android:checkableBehavior="single">
        <item
            android:id="@+id/action_popup_ascending"
            android:title="@string/menu_popup_ascending"
            android:checkable="true"/>
        <item
            android:id="@+id/action_popup_descending"
            android:title="@string/menu_popup_descending"
            android:checkable="true"/>
    </group>
</menu>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <com.getbase.floatingactionbutton.AddFloatingActionButton
        android:id="@+id/add_floating_action_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        fab:fab_colorNormal="@color/Secondary_Purple_200"
        fab:fab_colorPressed="@color/Secondary_Purple_400"
        fab:fab_plusIconColor="@color/Primary_White"
        android:layout_marginBottom="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginEnd="16dp" />
</RelativeLayout>

在模拟器 API 16(最小 SDK)中一切正常,但在 Android Logcat 中我看到错误并且不明白为什么。 在第一条消息中,您可以看到日志。

尝试重启模拟器

签入真机

Because sometime emulator not behave good, you need to test on real device if possible.