Actionbar scherlock не се опреснява, когато ориентацията се промени

Използвам лентата за действие Sherlock в моето приложение. Използвах функцията "ifRoom|withText" в моето меню. Ако тествам кода си в портретен режим, мога да видя само икона и ако завъртя ориентацията към пейзаж, пак виждам само икона. От друга страна, ако стартирам с пейзаж, мога да видя текст и икона на портрет и пейзаж. Това означава, че когато екранът се завърти, лентата с действия не се опреснява. Как мога да поправя?

В менюто имам

    android:showAsAction="ifRoom|withText"

Също така използвах този ред в моя манифестен файл, за да коригирам

    android:configChanges="keyboardHidden|orientation|screenSize"

но не се получи. И изпълнявам моя код android 2.3

Също така използвах фрагмент в моята дейност,

        FragmentManager fm = getSupportFragmentManager();
    ft = fm.beginTransaction();

    mFragment1 = fm.findFragmentByTag("f1");

    if (mFragment1 == null) {

        mFragment1 = new MenuFragment();
        ft.add(mFragment1, "f1");

    }

    ft.commit();

person SavasCinar    schedule 14.05.2012    source източник


Отговори (2)


Обработката на промени в конфигурацията не се поддържа с ActionBarSherlock.

На пред-ICS, ActionBarSherlock НЕ е част от изгледа на декора като родната лента за действие и следователно подлежи на същите ограничения като вашия изглед на съдържание. Като обработвате конфигурационните промени, вие не позволявате на библиотеката да се адаптира към промяната и следователно ще видите неправилно показване или определени части.

Документацията за Android също не насърчава обработката на промени в конфигурацията. Избягвайте ги на всяка цена, особено когато използвате ActionBarSherlock.

Във връзка с това, все още се опитвам да заобиколя това за бъдещи версии на библиотеката, но засега се препоръчва избягването.

person Jake Wharton    schedule 14.05.2012
comment
Имам някакъв код, който седи в моя метод onDestroy, но току-що добавих ABS, който сега извиква onDestroy, когато завъртите. Мислите ли, че най-добре е да преместя този код в манипулатора за бутона за връщане назад? Благодаря - person Matt; 12.07.2012
comment
Можете да замените onDestroy, стига да помните да извикате метода на суперкласа. - person Jake Wharton; 13.07.2012
comment
Забравих да спомена, че преди това не унищожавах дейности при ротация. Така че вместо това преместих кода в метода onBackPressed. - person Matt; 16.07.2012

Мисля, че ще трябва да създадете отново менюто ActionBar при промяна на конфигурацията

invalidateOptionsMenu();
person Tony    schedule 14.05.2012
comment
Благодаря ви за отговора, опитах вашата функция при промяна на конфигурацията, но не работи. Имате ли друга идея? - person SavasCinar; 14.05.2012
comment
Единственото ми друго предложение би било да опитате supportInvalidateOptionsMenu(); - person Tony; 14.05.2012
comment
Благодаря ти, Тони, но все пак нямаше ефект. Не знам къде е проблема - person SavasCinar; 15.05.2012