mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-04-20 13:59:14 +00:00
This fixes an issue where the existing PreferencesFragment was discarded when restoring PreferencesActivity from instance state. This issue caused the PreferencesFragment to no longer receive activity results. Most notably, this resulted in 0 byte vault files being created when exporting the vault.
43 lines
1.6 KiB
Java
43 lines
1.6 KiB
Java
package com.beemdevelopment.aegis.ui;
|
|
|
|
import android.os.Bundle;
|
|
|
|
public class PreferencesActivity extends AegisActivity {
|
|
private PreferencesFragment _fragment;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
if (savedInstanceState == null) {
|
|
_fragment = new PreferencesFragment();
|
|
_fragment.setArguments(getIntent().getExtras());
|
|
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, _fragment).commit();
|
|
} else {
|
|
_fragment = (PreferencesFragment) getSupportFragmentManager().findFragmentById(android.R.id.content);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
|
// pass permission request results to the fragment
|
|
_fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
}
|
|
|
|
@Override
|
|
protected void onRestoreInstanceState(final Bundle inState) {
|
|
// pass the stored result intent back to the fragment
|
|
if (inState.containsKey("result")) {
|
|
_fragment.setResult(inState.getParcelable("result"));
|
|
}
|
|
super.onRestoreInstanceState(inState);
|
|
}
|
|
|
|
@Override
|
|
protected void onSaveInstanceState(final Bundle outState) {
|
|
// save the result intent of the fragment
|
|
// this is done so we don't lose anything if the fragment calls recreate on this activity
|
|
outState.putParcelable("result", _fragment.getResult());
|
|
super.onSaveInstanceState(outState);
|
|
}
|
|
}
|