Я застреваю, пытаясь перезаписать стиль в диалоговом окне, когда фрагмент отображается после того, как он был создан как минимум один раз.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(...)
действительно происходит, но я предполагаю, что это происходит после того, как представление уже создано. Может ли стиль быть перезаписан после того, как приложение было приостановлено?
ОБНОВЛЕНИЕ: см. Мой комментарий, который включает в себя ответ ниже.