Я разрабатываю приложение, где использую ActionMode
.ActionMode не поддерживается в библиотеке поддержки v21 на ICS?
зависимостей проекта:
dependencies {
compile 'com.android.support:appcompat-v7:21.0.+'
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:support-v13:21.0+'
}
уровней API:
minSdkVersion 14
targetSdkVersion 21
Мой фрагмент использует ActionMode
:
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.packing_list_context, menu);
return true;
}
...
Меню:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/context_menu_item_edit"
android:icon="@drawable/ic_edit_black_24dp"
app:showAsAction="always"
android:title="@string/context_menu_item_edit" />
<item
android:id="@+id/context_menu_item_delete"
android:icon="@drawable/ic_delete_black_24dp"
app:showAsAction="always"
android:title="@string/context_menu_item_delete" />
<item
android:id="@+id/context_menu_item_tags"
android:icon="@drawable/ic_label_black_24dp"
app:showAsAction="always"
android:title="@string/context_menu_item_tags" />
</menu>
Когда я запускаю это приложение на Android 4.4, все в порядке. Но когда я запускаю его на Android 4.0.3, я получаю следующее исключение где-то в библиотеке поддержки:
Stack след:
W/System.err(7292): java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.getActionProvider()
W/System.err(7292): at android.support.v7.internal.view.menu.MenuItemImpl.getActionProvider(MenuItemImpl.java:634)
W/System.err(7292): at android.support.v7.internal.view.menu.MenuItemWrapperICS.getSupportActionProvider(MenuItemWrapperICS.java:322)
W/System.err(7292): at android.support.v7.internal.view.menu.MenuItemWrapperICS.checkActionProviderOverrideVisibility(MenuItemWrapperICS.java:348)
W/System.err(7292): at android.support.v7.internal.view.menu.MenuItemWrapperICS.setVisible(MenuItemWrapperICS.java:183)
W/System.err(7292): at android.support.v7.internal.view.SupportMenuInflater$MenuState.setItem(SupportMenuInflater.java:425)
W/System.err(7292): at android.support.v7.internal.view.SupportMenuInflater$MenuState.addItem(SupportMenuInflater.java:479)
W/System.err(7292): at android.support.v7.internal.view.SupportMenuInflater.parseMenu(SupportMenuInflater.java:196)
W/System.err(7292): at android.support.v7.internal.view.SupportMenuInflater.inflate(SupportMenuInflater.java:118)
W/System.err(7292): at net.cornplay.tourist.fragments.PackingListFragment.onCreateActionMode(PackingListFragment.java:392)
W/System.err(7292): at android.widget.AbsListView$MultiChoiceModeWrapper.onCreateActionMode(AbsListView.java:5635)
W/System.err(7292): at android.support.v7.internal.view.SupportActionModeWrapper$CallbackWrapper.onCreateActionMode(SupportActionModeWrapper.java:151)
W/System.err(7292): at android.support.v7.app.ActionBarActivityDelegateBase$ActionModeCallbackWrapper.onCreateActionMode(ActionBarActivityDelegateBase.java:1367)
W/System.err(7292): at android.support.v7.internal.app.WindowDecorActionBar$ActionModeImpl.dispatchOnCreate(WindowDecorActionBar.java:1012)
W/System.err(7292): at android.support.v7.internal.app.WindowDecorActionBar.startActionMode(WindowDecorActionBar.java:510)
W/System.err(7292): at android.support.v7.app.ActionBarActivityDelegateBase.startSupportActionMode(ActionBarActivityDelegateBase.java:576)
W/System.err(7292): at android.support.v7.app.ActionBarActivityDelegateHC.startActionModeForChild(ActionBarActivityDelegateHC.java:62)
W/System.err(7292): at android.support.v7.internal.widget.NativeActionModeAwareLayout.startActionModeForChild(NativeActionModeAwareLayout.java:44)
W/System.err(7292): at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
W/System.err(7292): at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
W/System.err(7292): at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
W/System.err(7292): at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
W/System.err(7292): at android.view.View.startActionMode(View.java:3607)
W/System.err(7292): at android.widget.AbsListView.setItemChecked(AbsListView.java:952)
W/System.err(7292): at net.cornplay.tourist.fragments.PackingListFragment.onItemLongClick(PackingListFragment.java:350)
W/System.err(7292): at net.cornplay.tourist.adapters.PackingListAdapter$2.onLongClick(PackingListAdapter.java:87)
W/System.err(7292): at android.view.View.performLongClick(View.java:3547)
W/System.err(7292): at android.view.View$CheckForLongPress.run(View.java:14088)
W/System.err(7292): at android.os.Handler.handleCallback(Handler.java:605)
W/System.err(7292): at android.os.Handler.dispatchMessage(Handler.java:92)
W/System.err(7292): at android.os.Looper.loop(Looper.java:137)
W/System.err(7292): at android.app.ActivityThread.main(ActivityThread.java:4424)
W/System.err(7292): at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(7292): at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err(7292): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
W/System.err(7292): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
W/System.err(7292): at dalvik.system.NativeStart.main(Native Method)
Google намекает на эти вопросы: https://code.google.com/p/android/issues/detail?id=77724, https://code.google.com/p/android/issues/detail?id=78212. Но как они могут быть связаны с моим кодом? Я не использую ShareActionProvider
.
Любые идеи?
Я нашел аналогичную проблему на трекер Android L Preview: https://code.google.com/p/android-developer-preview/issues/detail?id=1660. –
Эй, у меня очень похожий отчет об аварии моего приложения. Вы решили эту проблему? Можете ли вы попробовать его на своем устройстве 4.0.x, чтобы убедиться, что это та же проблема? Вот мое приложение: https://play.google.com/store/apps/details?id=com.lb.app_manager. Чтобы активировать режим действия, либо долго щелкните элемент, либо щелкните один значок. Дело в том, что я не использую getActionProvider или даже ShareActionProvider. Я просто использую «startSupportActionMode» ... –
@androiddeveloper Я проверил ваше приложение на 4.0.3 - он не сбой. –