如何更新共享首选项数据

问题描述:

我想设置应用主题的共享首选项 MainActivity-> Settings Activity - >主题片段和主题片段中。我点击时显示背景图片它会设置位置和位置将被活动接收设置图像视图,但事情是当我点击碎片图像时,它正在采取新的值,但在设置片段中,我无法获得更新的值。但在主要活动是越来越更新,但是当我从主活动设置的活动是得到更新。这回来的是,我想如何更新共享首选项数据

@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); 
    } 
} 

是否有任何其他方式来更新数据。 我如何期待它的工作。我显示在这种查看寻呼机像这样enter image description here当用户点击按钮它更新设置活动enter image description here但当我按下后退按钮从片段的背景没有得到更新无论是共享首选值。

+0

共享您用于在sharedpreferences中存储数据的代码 –

+0

我假设'“YOUR_PREF_NAME”'是一个字符串常量,不应该引用 –

+0

这个“YOUR_PREF_NAME”没有问题,它会正常工作,getSharedPreferences方法只需要一个字符串名称来制作首选项文件 –

使用editor.commit()立即保存。 commit()同步写入数据,apply()调度要异步写入的数据

+0

我试过这个兄弟,我试图把这个在每个活动生命周期方法,然后只有我问在堆栈 – SAVVY

+0

从哪里开始你的设置活动(你共享的第二个屏幕)?它不是从查看寻呼机项目点击监听器 – Praveen

+0

没有先生视图寻呼机只是设置共享首选项,我打开从主要活动的设置活动或从他们的片段按回来按钮 – SAVVY