我正在尝试为应用主题设置共享首选项 MainActivity->设置活动 - >主题片段和主题片段。我在显示背景图像时单击它将设置位置,活动将接收位置以设置图像视图,但事情是当我点击片段图像时它是获取新值但在设置片段中我无法获得更新的值。但是在主要活动中它正在更新,但是当我从主活动回到设置活动时它正在更新。这是我正在尝试的代码
@Override
protected void onResume() {
super.onResume();
SharedPreferences settings = getSharedPreferences("YOUR_PREF_NAME", 0);
int snowDensity = settings.getInt("SNOW_DENSITY", 0);
Glide.with(Settings.this).load(img[snowDensity])
.thumbnail(1f)
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(imageView);
}
这样我就设置了共享偏好
private class MyPagerAdapter extends PagerAdapter {
private int img[] = {R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4, R.drawable.img5, R.drawable.img6
};
@Override
public Object instantiateItem(ViewGroup container, final int position) {
ImageView view = new ImageView(getActivity());
Glide.with(getActivity()).load(img[position])
.thumbnail(1f)
.fitCenter()
.error(R.drawable.music)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.into(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity().getApplicationContext(), "Ringtone Set" + position, Toast.LENGTH_SHORT).show();
SharedPreferences settings = getActivity().getSharedPreferences("YOUR_PREF_NAME", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("SNOW_DENSITY", position);
editor.commit();
}
});
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return 6;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return (view == object);
}
}
有没有其他方法来更新数据。 我期待它如何工作。当用户点击按钮更新设置活动时,我在这个的视图寻呼机中显示但是当我按下片段中的后退按钮时background不会更新共享首选项值。
答案 0 :(得分:0)
使用editor.commit()立即保存。 commit()同步写入数据,其中apply()调度要异步写入的数据