Ich verwende eine SharedPreference, um einen Zoom-Wert für eine Kameravorschau zu speichern. Wenn ich im SharedPreference-Menü den Zoom-Wert von dort ändere, funktioniert alles einwandfrei. Ich habe auch einen ScaleGestureDetector zur Einstellung dieses Zoom-Wertes implementiert.SharedPreference UI-Steuerelement nicht aktualisiert
Das Problem ist, wenn ich den Gesten-Detektor verwende, wenn ich in das SharedPreference-Menü gehe, hat es das Steuerelement nicht aktualisiert.
Die tatsächliche XML für die SharedPreference (PrefsFile.xml) aktualisiert hat -
<float name="Zoom Area" value="1.0" />
jedoch die XML-Datei für den UI-Teil (package_preference.xml) noch auf den vorherigen Wert gesetzt ist -
<string name="pref_zoom_area">0.7</string>
ist mein Zuhörer ein Fragment innen -
public class Camera2VideoFragment extends Fragment implements View.OnClickListener, FragmentCompat.OnRequestPermissionsResultCallback, View.OnTouchListener {
...
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
mScaleFactor *= detector.getScaleFactor();
// Don't let the object get too small or too large.
mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 1.0f));
return true;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
mParameters.set_zoom_area(mScaleFactor);
SharedPreferences settings = getActivity().getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
Log.d(TAG, "onScaleEnd() mParameters.get_zoom_area() = " + mParameters.get_zoom_area());
editor.putFloat(getString(R.string.pref_zoom_area), mParameters.get_zoom_area());
editor.apply();
}
}
...
}
Ibestätigenwird angerufen.
Ich hatte vorher editor.commit()
aber ich dachte, editor.apply()
hätte dieses Problem behoben, ist aber nicht.
Gibt [diese Frage] (https://stackoverflow.com/questions/5652682/android-preferences-what-is-the-difference) Licht auf Ihr Problem? – Haem