2014-10-27 2 views
3

Я разрабатываю приложение, где использую 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.

Любые идеи?

+0

Я нашел аналогичную проблему на трекер Android L Preview: https://code.google.com/p/android-developer-preview/issues/detail?id=1660. –

+0

Эй, у меня очень похожий отчет об аварии моего приложения. Вы решили эту проблему? Можете ли вы попробовать его на своем устройстве 4.0.x, чтобы убедиться, что это та же проблема? Вот мое приложение: https://play.google.com/store/apps/details?id=com.lb.app_manager. Чтобы активировать режим действия, либо долго щелкните элемент, либо щелкните один значок. Дело в том, что я не использую getActionProvider или даже ShareActionProvider. Я просто использую «startSupportActionMode» ... –

+1

@androiddeveloper Я проверил ваше приложение на 4.0.3 - он не сбой. –

ответ

1

Собственно, это ошибка в библиотеке AppCompat. Это исправлено в v21.0.2. Просто обновлено, и приложение больше не разбивается.

+1

привет, где я могу найти новую версию appcompat, у меня есть обновление android sdk и использование нового, но я не могу решить эту ошибку –

Смежные вопросы