Fixed
Status Update
Comments
vi...@google.com <vi...@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
do...@gmail.com <do...@gmail.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:
vi...@google.com <vi...@google.com>
kc...@google.com <kc...@google.com>
cu...@google.com <cu...@google.com>
an...@google.com <an...@google.com> #5
Rc02 is work for me, thanks for your work!
Description
Version used: :1.0.0-beta02
Theme used: Theme.AppCompat
Devices/Android versions reproduced on: Pixel 3 XL
Crash logs:
Caused by java.lang.NullPointerException
Attempt to invoke virtual method 'boolean android.os.Bundle.getBoolean(java.lang.String, boolean)' on a null object reference
androidx.biometric.BiometricFragment.isDeviceCredentialAllowed (BiometricFragment.java:238)
androidx.biometric.BiometricPrompt$2.onPause (BiometricPrompt.java:505)
java.lang.reflect.Method.invoke (Method.java)
androidx.lifecycle.ClassesInfoCache$MethodReference.invokeCallback (ClassesInfoCache.java:216)
androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeMethodsForEvent (ClassesInfoCache.java:194)
androidx.lifecycle.ClassesInfoCache$CallbackInfo.invokeCallbacks (ClassesInfoCache.java:185)
androidx.lifecycle.ReflectiveGenericLifecycleObserver.onStateChanged (ReflectiveGenericLifecycleObserver.java:36)
androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent (LifecycleRegistry.java:361)
androidx.lifecycle.LifecycleRegistry.backwardPass (LifecycleRegistry.java:316)
androidx.lifecycle.LifecycleRegistry.sync (LifecycleRegistry.java:334)
androidx.lifecycle.LifecycleRegistry.moveToState (LifecycleRegistry.java:145)
androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent (LifecycleRegistry.java:131)
androidx.lifecycle.ReportFragment.dispatch (ReportFragment.java:123)
androidx.lifecycle.ReportFragment.onPause (ReportFragment.java:96)
android.app.Fragment.performPause (Fragment.java:2735)
android.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:1358)
android.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManagerImpl.java:1581)
android.app.FragmentManagerImpl.moveToState (FragmentManagerImpl.java:1642)
android.app.FragmentManagerImpl.dispatchMoveToState (FragmentManagerImpl.java:3052)
android.app.FragmentManagerImpl.dispatchPause (FragmentManagerImpl.java:3018)
android.app.FragmentController.dispatchPause (FragmentController.java:217)
android.app.Activity.performPause (Activity.java:7976)
android.app.Instrumentation.callActivityOnPause (Instrumentation.java:1507)
android.app.ActivityThread.performPauseActivityIfNeeded (ActivityThread.java:4493)
android.app.ActivityThread.performPauseActivity (ActivityThread.java:4454)
android.app.ActivityThread.handlePauseActivity (ActivityThread.java:4406)
android.app.servertransaction.PauseActivityItem.execute (PauseActivityItem.java:46)
android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:2016)
android.os.Handler.dispatchMessage (Handler.java:107)
android.os.Looper.loop (Looper.java:214)
android.app.ActivityThread.main (ActivityThread.java:7356)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:492)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:930)