7

Điều này nghe giống như một câu hỏi trùng lặp, nhưng không phải vậy.Không thể đặt OnActionExpandListener: Điều này không được hỗ trợ, sử dụng MenuItemCompat.setOnActionExpandListener()

Tôi đang cố gắng để thiết lập một OnActionExpandListener đến mục menu tìm kiếm của tôi:

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_country_picker, menu); 
    MenuItem menuItem = menu.findItem(R.id.search); 
    menuItem.setOnActionExpandListener(this); 
    //more code 
    return true; 
} 

Khi tôi chạy đó, tôi nhận được ngoại lệ này:

java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setOnActionExpandListener() 
                      at android.support.v7.view.menu.MenuItemImpl.setOnActionExpandListener(MenuItemImpl.java:743) 
                      at com.myapp.pages.country_picker.CountryPickerActivity.onCreateOptionsMenu(CountryPickerActivity.java:59) 
                      at android.app.Activity.onCreatePanelMenu(Activity.java:3145) 
                      at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:320) 
                      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:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6121) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 

Cool, hãy sử dụng MenuItemCompat.setOnActionExpandListener() rồi!

Đây là những gì tôi nhận được khi tôi thay menuItem.setOnActionExpandListener(this); với MenuItemCompat.setOnActionExpandListener(menuItem, this);:

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:363) 
                      at com.myapp.pages.country_picker.CountryPickerActivity.onCreateOptionsMenu(CountryPickerActivity.java:57) 
                      at android.app.Activity.onCreatePanelMenu(Activity.java:3145) 
                      at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:320) 
                      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:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6121) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 

TLDR:

Cố gắng sử dụng A: Đây không phải được hỗ trợ, sử dụng B.

Cố gắng sử dụng B: Tính năng này không được hỗ trợ, sử dụng B.

Một số cấu hình build.gradle có thể có liên quan:

compileSdkVersion 23 
buildToolsVersion '25.0.2' 

defaultConfig { 
    minSdkVersion 21 
    targetSdkVersion 23 
} 

dependencies { 
    compile 'com.android.support:support-v4:23.4.0' 
    androidTestCompile 'com.android.support:support-annotations:26.0.0-alpha1' 
    ... 
} 

PS: MenuItemCompat.setOnActionExpandListener() bị phản đối và các tài liệu giới thiệu để sử dụng MenuItem.setOnActionExpandListener(MenuItem.OnActionExpandListener, đó là những gì tôi đã cố gắng ở nơi đầu tiên, nhưng khi bạn có thể thấy, nó đã không làm việc.

Bất kỳ ý tưởng nào?

+0

Bạn đã giải quyết vấn đề? Im có cùng một vấn đề. – Max

+0

đã được giải quyết chưa? gặp vấn đề tương tự – Manny265

Trả lời

Các vấn đề liên quan