Description
After a series of operations on pages of 'add account' or 'create account', the Outlook Lite app showed only a empty page with nothing on it, what's more, I can't do any operation on the empty page, can't switch to another page of the app. I had to restart the app if I want to use it.
Pixel 8a (real device), Monkey for automatic testing, collecting api traces with Frida. The app mentioned is the latest version by now, installed from Google Play Store, Microsoft Outlook Lite, version Jan 12, 2015. I also performed a lot of testing on the full version which is Microsoft Outlook, but never meet this bug. I read the source code of both of them, and I found the implement difference, such as the page of 'add account', lite uses Fragment which is reusable, but full doesn't. If using the cleared Fragment (related api in source code), the page tends to be empty, which may be the reason of this bug.
Screenshots
Triggering Process
Video and report files
https://drive.google.com/drive/folders/15UG7ZT50iDgL8DRtzEM4EL7tiNq1XdST?usp=share_link
Monkey report
There was a crash happened during the process to the ANR bug in several times, I think it may be related to this bug.
// CRASH: com.microsoft.outlooklite (pid 29030)
// Short Msg: java.lang.IllegalStateException
// Long Msg: java.lang.IllegalStateException: Binding invalid when view does not exist.
// Build Label: google/akita/akita:15/AP4A.250105.002/12701944:user/release-keys
// Build Changelist: 12701944
// Build Time: 1732310633000
// java.lang.IllegalStateException: Binding invalid when view does not exist.
// at com.microsoft.outlooklite.utils.FragmentExtensionsKt$bindWithinLifecycle$1.getValue(SourceFile:26)
// at com.microsoft.outlooklite.fragments.InteractiveAuthFragment.getBinding(SourceFile:8)
// at androidx.appcompat.widget.SearchView$10.onTextChanged(SourceFile:71)
// at android.widget.TextView.sendOnTextChanged(TextView.java:12782)
// at android.widget.TextView.handleTextChanged(TextView.java:12897)
// at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:16491)
// at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:1268)
// at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:577)
// at androidx.emoji2.text.SpannableBuilder.replace(SourceFile:16)
// at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:508)
// at androidx.emoji2.text.SpannableBuilder.replace(SourceFile:7)
// at androidx.emoji2.text.SpannableBuilder.replace(SourceFile:1)
// at android.view.inputmethod.BaseInputConnection.replaceTextInternal(BaseInputConnection.java:1026)
// at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:962)
// at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:241)
// at com.android.internal.inputmethod.EditableInputConnection.commitText(EditableInputConnection.java:220)
// at android.view.inputmethod.InputConnectionWrapper.commitText(InputConnectionWrapper.java:207)
// at android.view.inputmethod.RemoteInputConnectionImpl.lambda$commitText$17(RemoteInputConnectionImpl.java:612)
// at android.view.inputmethod.RemoteInputConnectionImpl.$r8$lambda$jNtA8MXobPnaECkNr8D9WTYrxk0(Unknown Source:0)
// at android.view.inputmethod.RemoteInputConnectionImpl$$ExternalSyntheticLambda46.run(D8$$SyntheticClass:0)
// at android.os.Handler.handleCallback(Handler.java:991)
// at android.os.Handler.dispatchMessage(Handler.java:102)
// at android.os.Looper.loopOnce(Looper.java:232)
// at android.os.Looper.loop(Looper.java:317)
// at android.app.ActivityThread.main(ActivityThread.java:8787)
// at java.lang.reflect.Method.invoke(Native Method)
// at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:591)
// at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:871)
//