今天 Android Studio(设置为稳定频道更新)让我下载 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 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'
非常感谢。
Code
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)
UPDATE:
这似乎与这个问题有关,因为我也尝试过,同样的事情也发生在我身上。无论如何我不想更新到 API 26 -Android 支持 Repo 46.0.0 和 Android Studio 2.3 https://stackoverflow.com/questions/42949974/android-support-repo-46-0-0-with-android-studio-2-3