<分区>
今天 Android Studio(设置为稳定 channel 更新)让我下载 Android 支持存储库 46.0.0 的更新,所以我照做了。然后突然之间,我们的应用程序每次都开始崩溃,因为 MenuItemCompat.setOnActionExpandListener。
是的,我应该查看发行说明,但我没有 - 这是事实。
现在我们的问题是什么 - 即使我们使用推荐的符号 MenuItemCompat.setOnActionExpandListener,我们的应用程序崩溃了,我们被建议使用 MenuItemCompat.setOnActionExpandListener。那是胡说八道。
有人遇到同样的问题还是只是我们的代码问题?有人可以提供如何解决此问题或如何强制使用早期版本的支持库的建议吗?比方说 25.1.0。问题似乎出现在 26.0.0-alpha1 中,它很可能包含在支持存储库版本 46 中(请参阅该存储库的发行说明 - https://developer.android.com/topic/libraries/support-library/revisions.html#26-0-0-alpha1)
顺便说一句。我们的 build.gradle 已经将支持库的修复版本声明为 25.1.0。似乎新的支持库在使用 gradle 构建时以某种方式强制在内部使用其他版本。
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
compile 'com.android.support:support-v4:25.1.0'
非常感谢。
代码
MenuItemCompat.setOnActionExpandListener(menu.findItem(R.id.action_search), new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem menuItem) {
...
}
StackTrace 的一部分
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.dev, PID: 4835
java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setOnActionExpandListener()
at android.support.v7.view.menu.MenuItemImpl.setOnActionExpandListener(MenuItemImpl.java:745)
at android.support.v4.view.MenuItemCompat.setOnActionExpandListener(MenuItemCompat.java:363)
at com.example.fragments.DevicesFragment.onCreateOptionsMenu(DevicesFragment.java:455)
at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:2338)
at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:3070)
at android.support.v4.app.FragmentController.dispatchCreateOptionsMenu(FragmentController.java:328)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:321)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:95)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:333)
at android.support.v7.app.AppCompatDelegateImplV9.preparePanel(AppCompatDelegateImplV9.java:1372)
at android.support.v7.app.AppCompatDelegateImplV9.doInvalidatePanelMenu(AppCompatDelegateImplV9.java:1652)
at android.support.v7.app.AppCompatDelegateImplV9$1.run(AppCompatDelegateImplV9.java:134)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
更新: 这似乎与这个问题有关,因为我也尝试过同样的事情发生在我身上。反正我不想更新到 API 26 - Android Support Repo 46.0.0 with Android Studio 2.3