2013-11-27 7 views
0

Я предоставляю тему для моего приложения. Но я нашел, что тема вернется к теме по умолчанию после ротации. Вот мой код:темы для Android после ротации

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    config = PreferenceManager.getDefaultSharedPreferences(this); 
    theme = config.getString("theme", ""); 

    setActionBarTheme(theme); 
    setContentView(R.layout.main); 
} 

private void setActionBarTheme(String theme) 
{ 
    if(theme.equals("Holo Red")) 
    { 
     setTheme(R.style.onTime_Theme_Holo_Red); 
    }else 
    { 
     setTheme(R.style.onTime_Theme_Default); 
    } 
} 

Эта деятельность принимает фрагменты, когда устройство вращается, фрагмент остается, но сброс темы.

Если конфигурация устройства изменена, она должна воссоздать действие. Это ошибка или я что-то пропустил?

ответ

1

Как отметил @CBergson, вы можете сохранить тему и воссоздать ее, воссоздав Activity.

С другой стороны, вы можете предотвратить Android от уничтожения вашего Activity, добавив следующую строку в AndroidManifest.xml:

<activity android:name="YourActivity" 
    android:configChanges="orientation|screenSize" /> 

Дальнейшее чтение here.

+0

Да, я пробовал. Но я предпочитаю разрешить поворот = D Что вы, ребята, хотите сохранить тему? Я уже сохраняю его в SharedPeferences и загружаю его при создании активности. – crossRT

+0

Хорошо, там не было кода, где вы его сохранили ... Я думаю, что вы пропустили меня, мое решение не имеет ничего общего с отрицанием вращения. Он просто инструктирует Android _NOT_ воссоздать действие по вращению. Просто попробуйте ... – alex

+0

Извините за поздний ответ. Да, моя ошибка, ваш ответ работает очень хорошо. И я ищу его для разработчика doc [activity] (http://developer.android.com/guide/topics/manifest/activity-element.html). Огромное спасибо. = D – crossRT

0

Вы должны сохранить/обновить текущую тему в своих настройках, чтобы она не была значением по умолчанию. Жизненный цикл активности будет повторяться (stop-destroy-start и т. Д.), Когда происходит ротация. Вам необходимо сохранить его до завершения цикла до начала следующего цикла активности.

+0

Что значит сохранить его? Я сохранил тему как строку в SharedPreferences и загружаю ее каждый раз, когда создается действие. – crossRT

+0

напишите свой код пожалуйста. Вы сказали, что вы предоставили опции, чтобы пользователи могли выбирать, и где вы его сохраните? – Canberk

+0

Я сохраняю его по умолчанию SharedPreference, и этот параметр предоставляется в PreferenceActivity. Теперь проблема в правильной настройке темы при запуске активности, но после вращения она вернется к умолчанию. – crossRT

Смежные вопросы