Сдвиньте куда угодно, чтобы открыть навигационный ящик

Я использовал предоставленный здесь обходной путь, который позволяет приложению открывать навигационную панель всякий раз, когда пользователь (справа) находится где-нибудь на экране. Код работает абсолютно нормально.

Тем не менее, я только что подписал свой apk для загрузки в Play Store, и во время тестирования открывающийся слайд не работал. Я немного понюхал, чтобы выяснить, в чем проблема, и обнаружил, что NoSuchFieldException за Field leftDraggerField = drawerLayout.getClass().getDeclaredField("mLeftDragger");

Я понятия не имею, почему это не работает. Он прекрасно работает с отладочным apk, но не с подписанным apk. Может кто-нибудь, пожалуйста, помогите мне понять проблему?

1 ответ

Решение

Ну что ж, это был кошмар, когда я впервые столкнулся с этой проблемой. Мне потребовалось пару часов, чтобы понять, что происходит не так. Проблема была в том, что я включил ProGuard и поле участника mLeftDragger был запутан. Я должен был сказать ProGuard, чтобы не запутывать кого-либо из членов класса DrawerLayout, который принадлежал к пакету android.support.v4.widget

Я добавил следующее в proguard-project.txt

-keepclasseswithmembernames class android.support.v4.widget.** { *; }

и все работало как шарм, как и раньше.

Другие вопросы по тегам