NoSuchFieldError при обновлении из ActionBarSherlock в AppCompatActivity - PullRequest
0 голосов
/ 14 февраля 2019

Я обновляю приложение с API 9 до API 28, в котором реализован ActionBarSherlock.Я следовал многим учебникам (особенно этот ), чтобы перейти от ActionBarSherlock к ActionBarActivity и немного подправил их, чтобы обновить ActionBarActivity до AppCompatActivity.

Проблема, с которой я столкнулся, заключается в том, что после полного обновления у меня происходит сбой во время выполнения с одним из атрибутов ActionBarSherlock, который я не могу удалить или переопределить, так как он используется appcompatv7.

java.lang.NoSuchFieldError: No static field ActionBar_displayOptions of type I in class Landroid/support/v7/appcompat/R$styleable; or its superclasses (declaration of 'android.support.v7.appcompat.R$styleable' appears in /data/app/com.android.app-OJqieQQnVdzAHNjYAKgnhA==/split_lib_slice_0_apk.apk)
    at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:133)
    at android.support.v7.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:96)
    at android.support.v7.widget.Toolbar.getWrapper(Toolbar.java:2112)
    at android.support.v7.widget.ActionBarOverlayLayout.getDecorToolbar(ActionBarOverlayLayout.java:547)
    at android.support.v7.widget.ActionBarOverlayLayout.pullChildren(ActionBarOverlayLayout.java:539)
    at android.support.v7.widget.ActionBarOverlayLayout.setWindowCallback(ActionBarOverlayLayout.java:615)
    at android.support.v7.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:611)
    at android.support.v7.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:518)
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:466)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
    at com.android.app.ui.activity.LoginActivity.onCreate(LoginActivity.java:40)

И, проверяя файл abs__attrs.xml, я вижу, что attr:

<attr name="displayOptions">

    <flag name="useLogo" value="0x1" />
    <flag name="showHome" value="0x2" />
    <flag name="homeAsUp" value="0x4" />
    <flag name="showTitle" value="0x8" />
    <flag name="showCustom" value="0x10" />
    <flag name="disableHome" value="0x20" />

</attr>

Если я удалил или изменил его имя, компилятор жалуется и не позволяет мне запустить сборкупроект - но он должен получить поле из библиотеки поддержки v7, верно?

В любом случае, я попытался изменить тему действия на

"android:theme=@style/Theme.AppCompat.Light.NoActionBar"

и загрузить его без ActionBar, поэтому я предполагаю, что проблема действительно в чем-тосвязанные с ActionBar.Есть идеи?

Ура!

1 Ответ

0 голосов
/ 24 февраля 2019

Проблема была с библиотекой поддержки, загрузка снова исправила проблему!

...