<NME> PreferenceBackupFragment.java
<BEF> package cgeo.geocaching.settings.fragments;

import cgeo.geocaching.R;
import cgeo.geocaching.ui.dialog.SimpleDialog;
import cgeo.geocaching.utils.BackupUtils;

import android.content.SharedPreferences;
import android.os.Bundle;

import androidx.preference.CheckBoxPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
import androidx.preference.SeekBarPreference;

public class PreferenceBackupFragment extends PreferenceFragmentCompat {
    public static final String STATE_BACKUPUTILS = "backuputils";

    private SharedPreferences sharedPrefs;

    @Override
    public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
        setPreferencesFromResource(R.xml.preferences_backup, rootKey);

        sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
        final BackupUtils backupUtils = new BackupUtils(getActivity(), savedInstanceState == null ? null : savedInstanceState.getBundle(STATE_BACKUPUTILS));

        final Preference backup = findPreference(getString(R.string.pref_fakekey_preference_backup));
        backup.setOnPreferenceClickListener(preference -> {
            // TODO
            //backupUtils.backup(() -> onPreferenceChange(findPreference(getString(R.string.pref_fakekey_preference_restore))));
            return true;
        });

            return true;
        });

        findPreference(getString(R.string.pref_fakekey_startrestore_dirselect)).setOnPreferenceClickListener(preference -> {
            backupUtils.selectBackupDirIntent();
            return true;
        });

        final CheckBoxPreference loginData = findPreference(getString(R.string.pref_backup_logins));
        loginData.setOnPreferenceClickListener(preference -> {
            if (loginData.isChecked()) {

        final CheckBoxPreference loginData = findPreference(getString(R.string.pref_backup_logins));
        loginData.setOnPreferenceClickListener(preference -> {
            if (getBackupLoginData()) {
                loginData.setChecked(false);
                SimpleDialog.of(getActivity()).setTitle(R.string.init_backup_settings_logins).setMessage(R.string.init_backup_settings_backup_full_confirm).confirm((dialog, which) -> loginData.setChecked(true));
            }
            return true;
        });

        // TODO
        //onPreferenceChange(findPreference(getString(R.string.pref_fakekey_preference_restore)));

        final SeekBarPreference keepOld = (SeekBarPreference) findPreference(getString(R.string.pref_backups_backup_history_length));


    @Override
    public void onResume() {
        super.onResume();
        getActivity().setTitle(R.string.settings_title_backup);
    }

    private void updateSummary() {
        final String textRestore;
        if (BackupUtils.hasBackup(BackupUtils.newestBackupFolder())) {
        getActivity().setTitle(R.string.settings_title_backup);
    }

    public boolean getBackupLoginData() {
        return sharedPrefs != null && sharedPrefs.getBoolean(getString(R.string.pref_backup_logins), false);
    }
}

<MSG> reactivate "start backup" (fix #12233)

<DFF> @@ -4,31 +4,25 @@ import cgeo.geocaching.R;
 import cgeo.geocaching.ui.dialog.SimpleDialog;
 import cgeo.geocaching.utils.BackupUtils;
 
-import android.content.SharedPreferences;
 import android.os.Bundle;
 
 import androidx.preference.CheckBoxPreference;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.PreferenceManager;
 import androidx.preference.SeekBarPreference;
 
 public class PreferenceBackupFragment extends PreferenceFragmentCompat {
     public static final String STATE_BACKUPUTILS = "backuputils";
 
-    private SharedPreferences sharedPrefs;
-
     @Override
     public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
         setPreferencesFromResource(R.xml.preferences_backup, rootKey);
 
-        sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
         final BackupUtils backupUtils = new BackupUtils(getActivity(), savedInstanceState == null ? null : savedInstanceState.getBundle(STATE_BACKUPUTILS));
 
         final Preference backup = findPreference(getString(R.string.pref_fakekey_preference_backup));
         backup.setOnPreferenceClickListener(preference -> {
-            // TODO
-            //backupUtils.backup(() -> onPreferenceChange(findPreference(getString(R.string.pref_fakekey_preference_restore))));
+            backupUtils.backup(this::updateSummary);
             return true;
         });
 
@@ -46,15 +40,14 @@ public class PreferenceBackupFragment extends PreferenceFragmentCompat {
 
         final CheckBoxPreference loginData = findPreference(getString(R.string.pref_backup_logins));
         loginData.setOnPreferenceClickListener(preference -> {
-            if (getBackupLoginData()) {
+            if (loginData.isChecked()) {
                 loginData.setChecked(false);
                 SimpleDialog.of(getActivity()).setTitle(R.string.init_backup_settings_logins).setMessage(R.string.init_backup_settings_backup_full_confirm).confirm((dialog, which) -> loginData.setChecked(true));
             }
             return true;
         });
 
-        // TODO
-        //onPreferenceChange(findPreference(getString(R.string.pref_fakekey_preference_restore)));
+        updateSummary();
 
         final SeekBarPreference keepOld = (SeekBarPreference) findPreference(getString(R.string.pref_backups_backup_history_length));
 
@@ -71,7 +64,13 @@ public class PreferenceBackupFragment extends PreferenceFragmentCompat {
         getActivity().setTitle(R.string.settings_title_backup);
     }
 
-    public boolean getBackupLoginData() {
-        return sharedPrefs != null && sharedPrefs.getBoolean(getString(R.string.pref_backup_logins), false);
+    private void updateSummary() {
+        final String textRestore;
+        if (BackupUtils.hasBackup(BackupUtils.newestBackupFolder())) {
+            textRestore = getString(R.string.init_backup_last) + " " + BackupUtils.getNewestBackupDateTime();
+        } else {
+            textRestore = getString(R.string.init_backup_last_no);
+        }
+        findPreference(getString(R.string.pref_fakekey_preference_restore)).setSummary(textRestore);
     }
 }

reactivate "start backup" (fix #12233)