jamie-mh / AuthenticatorPro

📱 Two-Factor Authentication (2FA) client for Android + Wear OS
https://authenticatorpro.jmh.me
GNU General Public License v3.0
2.71k stars 194 forks source link

PreferenceDialogFragmentCompat must implement TargetFragment interface #1111

Open har-nick opened 3 months ago

har-nick commented 3 months ago

Describe the bug When switching to and from dark mode with an alert dialog open causes an IllegalStateException.

To Reproduce Steps to reproduce the behavior:

  1. Go to Settings page
  2. Tap any setting that uses an alert dialog
  3. Keeping it open, change from/to dark mode

Expected behavior The app should change themes without crashes and restarting.

App Version - 1.24.1

Additional context

Device specs **Device** - Pixel 4a (4G) **OS** - DivestOS **Android Version** - 14
Crash log ``` Java.Lang.IllegalStateException: Target fragment must implement TargetFragment interface at Java.Interop.JniEnvironment.InstanceMethods.CallNonvirtualVoidMethod(JniObjectReference , JniObjectReference , JniMethodInfo , JniArgumentValue* ) at Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeVirtualVoidMethod(String , IJavaPeerable , JniArgumentValue* ) at Android.App.Activity.OnCreate(Bundle ) at AuthenticatorPro.Droid.Activity.BaseActivity.OnCreate(Bundle savedInstanceState) at AuthenticatorPro.Droid.Activity.SettingsActivity.OnCreate(Bundle savedInstanceState) at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_(IntPtr jnienv, IntPtr native__this, IntPtr native_savedInstanceState) at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPL_V(_JniMarshal_PPL_V callback, IntPtr jnienv, IntPtr klazz, IntPtr p0) --- End of managed Java.Lang.IllegalStateException stack trace --- java.lang.IllegalStateException: Target fragment must implement TargetFragment interface at androidx.preference.PreferenceDialogFragmentCompat.onCreate(PreferenceDialogFragmentCompat.java:85) at androidx.preference.ListPreferenceDialogFragmentCompat.onCreate(ListPreferenceDialogFragmentCompat.java:50) at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094) at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034) at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941) at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:252) at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219) at crc643c2a2b888a14ec9a.SettingsActivity.n_onCreate(Native Method) at crc643c2a2b888a14ec9a.SettingsActivity.onCreate(SettingsActivity.java:45) at android.app.Activity.performCreate(Activity.java:8342) at android.app.Activity.performCreate(Activity.java:8321) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1417) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3626) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782) at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5783) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5674) at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:71) at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:138) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7924) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ExecInit.main(ExecInit.java:48) at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:355) --- End of managed Java.Lang.IllegalStateException stack trace --- java.lang.IllegalStateException: Target fragment must implement TargetFragment interface at androidx.preference.PreferenceDialogFragmentCompat.onCreate(PreferenceDialogFragmentCompat.java:85) at androidx.preference.ListPreferenceDialogFragmentCompat.onCreate(ListPreferenceDialogFragmentCompat.java:50) at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094) at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034) at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941) at androidx.fragment.app.FragmentController.dispatchCreate(FragmentController.java:252) at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:219) at crc643c2a2b888a14ec9a.SettingsActivity.n_onCreate(Native Method) at crc643c2a2b888a14ec9a.SettingsActivity.onCreate(SettingsActivity.java:45) at android.app.Activity.performCreate(Activity.java:8342) at android.app.Activity.performCreate(Activity.java:8321) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1417) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3626) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782) at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5783) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5674) at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:71) at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:138) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7924) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ExecInit.main(ExecInit.java:48) at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:355) ```