Сдвиньте куда угодно, чтобы открыть навигационный ящик
Я использовал предоставленный здесь обходной путь, который позволяет приложению открывать навигационную панель всякий раз, когда пользователь (справа) находится где-нибудь на экране. Код работает абсолютно нормально.
Тем не менее, я только что подписал свой 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.** { *; }
и все работало как шарм, как и раньше.