【发布时间】:2017-10-19 09:59:09
【问题描述】:
我正在使用 SharedPreference 来存储相机预览的缩放值。 从 SharedPreference 菜单中,如果我从那里更改缩放值,一切正常。 我还实现了一个 ScaleGestureDetector 来设置这个缩放值。
问题是,在使用手势检测器时,当我进入 SharedPreference 菜单时,它并没有更新控件。
SharedPreference (PrefsFile.xml) 的实际 XML 已更新 -
<float name="Zoom Area" value="1.0" />
但是 UI 部分的 XML 文件 (package_preference.xml) 仍然设置为之前的值 -
<string name="pref_zoom_area">0.7</string>
我的听众在一个片段内 -
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() 会解决这个问题,但没有。
【问题讨论】:
-
this question 能说明您的问题吗?
标签: android xml sharedpreferences