J'utilise SharedPreference pour stocker une valeur de zoom pour un aperçu de caméra. Dans le menu SharedPreference, si je change la valeur du zoom, tout fonctionne correctement. J'ai également implémenté un ScaleGestureDetector pour définir cette valeur de zoom. Le problème est, lorsque j'utilise le détecteur de mouvement, lorsque je vais dans le menu SharedPreference, il n'a pas mis à jour le contrôle.Contrôle de l'interface utilisateur SharedPreference non mis à jour
Le XML réel pour le SharedPreference (PrefsFile.xml) a mis à jour -
<float name="Zoom Area" value="1.0" />
Cependant, le fichier XML pour la partie de l'interface utilisateur (de package_preference.xml) est toujours fixé à la valeur précédente -
<string name="pref_zoom_area">0.7</string>
Mon auditeur se trouve dans un fragment -
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();
}
}
...
}
Je peux confirmer onScaleEnd()
est appelé.
J'avais auparavant editor.commit()
mais je pensais que editor.apply()
aurait corrigé ce problème mais ne l'a pas fait.
[cette question] (https://stackoverflow.com/questions/5652682/android-preferences-what-is-the-difference) fait-elle la lumière sur votre problème? – Haem