0
私はSharedPreferenceを使用してカメラプレビューのズーム値を保存しています。 SharedPreferenceメニューからズーム値を変更すると、すべて正常に動作します。 このズーム値を設定するためのScaleGestureDetectorも実装しました。SharedPreference UIコントロールが更新されていません
問題は、ジェスチャ検出器を使用しているときに、SharedPreferenceメニューに入るときにコントロールを更新しなかったことです。
SharedPreference(PrefsFile.xml)の実際のXMLを更新しました-
<string name="pref_zoom_area">0.7</string>
- UI部品(package_preference.xml)のためのXMLファイルがまだ前の値に設定されているが
<float name="Zoom Area" value="1.0" />
私のリスナーは、フラグメント内にある - 私は確認することができ
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();
}
}
...
}
onScaleEnd()
が呼び出されています。
私は前にeditor.commit()
を持っていましたが、私はeditor.apply()
がこの問題を修正していたと思いますが、そうではありませんでした。
ん[この質問](https://stackoverflow.com/questions/5652682/android-preferences-what-is-the-difference)あなたの問題に光を当てますか? – Haem