Android 6.0+:java.lang.UnsupportedOperationException:不支持,请使用MenuItemCompat.setOnActionExpandListener()

问题描述 投票:1回答:1

Android Studio 3.2。

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'


android {
    compileSdkVersion 25
    defaultConfig {
        applicationId "com.myproject"
        minSdkVersion 18
        targetSdkVersion 25
        versionCode 423
        versionName "2.1.423"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

def AAVersion ='4.5.2'

依赖项{注解处理器“ org.androidannotations:androidannotations:$ AAVersion”注解处理器“ org.androidannotations:ormlite:$ AAVersion”

implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:appcompat-v7:25.0.0'
implementation 'com.android.support:cardview-v7:25.0.0'
implementation 'com.android.support:customtabs:25.0.0'
implementation 'com.android.support:support-media-compat:25.0.0'
implementation 'com.android.support:support-v4:25.0.0'

implementation 'com.crashlytics.sdk.android:crashlytics:2.9.7'
implementation 'com.google.android.gms:play-services-gcm:16.0.0'
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.j256.ormlite:ormlite-android:5.1'
implementation 'commons-codec:commons-codec:1.11'
implementation 'commons-io:commons-io:2.6'
implementation 'org.apache.commons:commons-lang3:3.8.1'
implementation 'org.apache.httpcomponents:httpclient:4.3.6'
implementation "org.androidannotations:androidannotations-api:$AAVersion"
implementation "org.androidannotations:ormlite-api:$AAVersion"

testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'

}

   MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionExpand(MenuItem item) {
                isSearchWidgetExpanded = true;
                mToolbar.setBackgroundColor(ContextCompat.getColor(activity, R.color.search_view_background));
                // Expand (click to magnifying glass) and give focus to
                // SearchView automatically
                searchView.setFocusable(true);
                searchView.setIconified(false);
                searchView.requestFocusFromTouch();
                searchView.setIconifiedByDefault(false);

                menu.setGroupVisible(R.id.main_menu_group, false);
                return true;
            }

            @Override
            public boolean onMenuItemActionCollapse(MenuItem item) {
                if (BuildConfig.DEBUG)
                    Log.d(TAG, "onMenuItemActionCollapse(), press_home_searchView");
                isSearchWidgetExpanded = false;
                mToolbar.setBackgroundColor(activity.getResources().getColor(R.color.factura_background_color));
                searchView.setQuery("", false);
                menu.setGroupVisible(R.id.main_menu_group, true);
                AndroidUtil.hideKeyboard((Activity) activity);
                return true;
            }
        });

在Android 6.0+上启动时出现错误:

Process: com.myproject, PID: 24036
java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setOnActionExpandListener()
    at android.support.v7.view.menu.MenuItemImpl.setOnActionExpandListener(MenuItemImpl.java:743)
    at android.support.v4.view.MenuItemCompat.setOnActionExpandListener(MenuItemCompat.java:464)
    at com.myproject.widget.SearchViewProviderWidget.<init>(SearchViewProviderWidget.java:147)
    at com.myproject.MainFragmentActivity.onCreateOptionsMenu(MainFragmentActivity.java:703)
    at android.app.Activity.onCreatePanelMenu(Activity.java:2852)
    at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:328)
    at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:92)
    at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:331)
    at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:92)
    at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454)
    at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
   Force finishing activity com.myproject/.MainFragmentActivity_

此行有错误:

MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() {
android android-studio-3.0
1个回答
-1
投票

Documentation说直接使用这种方法:

searchMenuItem.setOnActionExpandListener(new MenuItemCompat.OnActionExpandListener() { /* ... */ })

编辑:

这可能是支持库版本25中的错误,因此要使用更新的版本(如26)来修复它。

© www.soinside.com 2019 - 2024. All rights reserved.