From 5f502667087b7e3ff2e8ea5ff82b69b3c9a5d735 Mon Sep 17 00:00:00 2001 From: Dimitris Dafnis <68849116+jim-daf@users.noreply.github.com> Date: Sat, 25 Apr 2026 21:15:03 +0200 Subject: [PATCH] fix(pm): preserve message WebView state across fragment recreation (#691) --- .../com/ferg/awfulapp/MessageFragment.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/Awful.apk/src/main/java/com/ferg/awfulapp/MessageFragment.java b/Awful.apk/src/main/java/com/ferg/awfulapp/MessageFragment.java index df1053fd2..e92f66d8f 100644 --- a/Awful.apk/src/main/java/com/ferg/awfulapp/MessageFragment.java +++ b/Awful.apk/src/main/java/com/ferg/awfulapp/MessageFragment.java @@ -107,6 +107,16 @@ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setHasOptionsMenu(true); } + + @Override + public void onSaveInstanceState(@androidx.annotation.NonNull Bundle outState) { + super.onSaveInstanceState(outState); + // Issue #691: persist the message WebView so re-entering the + // fragment after the settings activity does not redraw blank. + if (messageWebView != null) { + messageWebView.saveState(outState); + } + } public View onCreateView(LayoutInflater aInflater, ViewGroup aContainer, Bundle aSavedState) { super.onCreateView(aInflater, aContainer, aSavedState); @@ -134,9 +144,16 @@ public View onCreateView(LayoutInflater aInflater, ViewGroup aContainer, Bundle messageWebView.setJavascriptHandler(new WebViewJsInterface()); messageWebView.setContent(AwfulHtmlPage.getContainerHtml(mPrefs, null, false)); + // Issue #691: restore the saved WebView snapshot when the + // fragment is recreated so the message body does not come back + // blank after popping back from the settings activity. + if (aSavedState != null) { + messageWebView.restoreState(aSavedState); + } + if(pmId <=0){ messageWebView.setVisibility(GONE); - }else{ + }else if (aSavedState == null) { syncPM(); }