Замените устаревший файл android.support.v4.app.ActionBarDrawerToggle с выводом версии версии support.v7 не работает на желе Bean

В ответ на этот вопрос я заменил ActionBarDrawerToggle библиотеки поддержки v4, которая в последнем обновлении (rev 21) устарела с последним ActionBarDrawerToggle support-v7 library.

Теперь ящик работает с эмулятором Andrid Lollipop без предупреждений об устаревании, но когда я тестирую приложение на реальном железе Bean, ящик не выдвигается, и кнопка переключения курсора не отображается.

Что, черт возьми, связано с этим обновлением библиотеки поддержки? Как я могу исправить эту проблему без перехода к предыдущей версии?

Здесь мой макет

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <!--  content view -->

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/drawer_text" />
    </RelativeLayout>

    <!-- nav drawer -->

    <ListView
        android:id="@+id/drawer"
        android:layout_width="320dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#F3F3F4"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp" />

</android.support.v4.widget.DrawerLayout>

Ответ 1

  • Чтобы корректно работать с ActionBarDrawerToggle v7, вам необходимо расширить класс Activity от android.support.v7.app.ActionBarActivity
  • ActionBarActivity v7 следует использовать с темой Theme.AppCompat из библиотеки поддержки appcompat-v7:21.
  • Если вы не хотите переключаться с ActionBar на ToolBar, не добавлять <item name="windowActionBar">false</item> при расширении Theme.AppCompat. Это приведет к тому, что ваш ActionBarActivity не будет иметь декор по умолчанию ActionBar, а getSupportActionBar вернет значение null. Вы должны будете предоставить свой собственный ToolBar и сначала вызвать setSupportActionBar, чтобы сделать работу getSupportActionBar.