Fixed
Status Update
Comments
il...@google.com <il...@google.com> #2
Duplicate of internal issue
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 45a1bc4a15b5b10d0635d79fb55df2aced5a2a4a
Author: Alan Viverette <alanv@google.com>
Date: Thu May 14 18:06:25 2020
Only apply DayNight changes to Activity-hosted delegates
Dialogs can't receive configuration change callbacks, so there's no point
in updating their configurations. They'll have to be destroyed and re-
created by their host activities. Also, dialogs were eating the changes.
Fixes: 155379937
Test: NightModeForegroundDialogTestCase and appcompat test suite
Change-Id: Ifa18d9d42268ec8821223942dc6c817ecabbed7f
A appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeDialogFragment.java
A appcompat/appcompat/src/androidTest/java/androidx/appcompat/app/NightModeForegroundDialogTestCase.kt
M appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDelegate.java
M appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDelegateImpl.java
ap...@google.com <ap...@google.com> #3
I think, sActiveDelegates
meant "live" delegates. Anyway, now there's a mess :(
private static final ArraySet<WeakReference<AppCompatDelegate>> sActivityDelegates;
private static final Object sActivityDelegatesLock;
static void addActiveDelegate(@NonNull AppCompatDelegate delegate);
static void removeActivityDelegate(@NonNull AppCompatDelegate delegate);
private static void removeDelegateFromActives(@NonNull AppCompatDelegate toRemove);
private static void applyDayNightToActiveDelegates();
Source:
Description
Component used: fragment-testing
It would be great to have a
FragmentScenario.withFragment()
extension function which has equivalent capabilities toActivityScenario.withActivity()
(return value, caching and rethrowing of exceptions).If it's helpful, I have added this to one of my tests here . It is a direct port of
ActivityScenario.withActivity()
, so I'm not sure if I'm missing any fragment-specific considerations, but it has been working for my use case.