2016-01-16 2 views
0

Я застреваю, пытаясь перезаписать стиль в диалоговом окне, когда фрагмент отображается после того, как он был создан как минимум один раз.DialogFragment перезаписывает стиль при возврате на передний план

Это соответствующий код:

Мои styles.xml:

<style name="Theme.MyDialog.Default"> 
    <item name="android:windowBackground">@drawable/my_background</item> 
</style> 

<style name="Theme.MyDialog.NoAnimation" 
    parent="Theme.MyDialog.Default"> 
    <item name="android:windowEnterAnimation">@null</item> 
</style> 

Мой фрагмент соответствующая часть кода:

private boolean wasPaused; 

@Override 
public void onStart() { 
    super.onStart(); 

    if (wasPaused) { 
     // when this dialog re-enters foreground, do not animate it 
     super.setStyle(DialogFragment.STYLE_NO_FRAME, R.style.Theme_MyDialog_NoAnimation); 
    } 
} 

@Override 
public void onStop() { 
    wasPaused = true; 

    super.onStop(); 
} 

стиль никогда не бывает R.style.Theme_MyDialog_NoAnimation даже после того, как идет диалог фрагмент вернуться на передний план после фонового рисунка. Операторы отладки показывают, что super.setStyle(...) действительно происходит, но я предполагаю, что это происходит после того, как представление уже создано. Может ли стиль быть перезаписан после того, как приложение было приостановлено?

ОБНОВЛЕНИЕ: см. Мой комментарий, который включает в себя ответ ниже.

ответ

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