【问题标题】:sharedpreferences is not saving or loading my data Androidsharedpreferences 没有保存或加载我的数据 Android
【发布时间】:2017-01-06 14:34:15
【问题描述】:

这是我的 savaData 和 loadData 方法,用于保存和加载数据

 public void saveData(){
        SharedPreferences sharedPreferences= getActivity().getSharedPreferences("SubjectTitle", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor=sharedPreferences.edit();
        int i=0,n;
        n=addArray.size();
        for(Bunk b: addArray) {
            editor.putString("Title"+i, b.getTitle());
            editor.putInt("No_of_bunk"+i, b.getBunk_remain());
            editor.putFloat("pre_of_att"+i, b.getPrecentageAtt());
            i++;
        }
        editor.putInt("size_of_data",n);
        editor.apply();
        Toast.makeText(getActivity(),"data saved",Toast.LENGTH_SHORT).show();

    }
    public ArrayList<Bunk> loadData(){
        SharedPreferences sharedPreferences= getActivity().getSharedPreferences("SubjectTitle", Context.MODE_PRIVATE);
        int n=sharedPreferences.getInt("size_pf_data",Default);
        String loadTitle;
        int loadBunk;
        float loadAtt;
        for(int i=0;i<n;i++){
            loadTitle=sharedPreferences.getString("Title"+i,DEFAULT);
            loadBunk=sharedPreferences.getInt("No_of_bunk"+i,Default);
            loadAtt=sharedPreferences.getFloat("pre_of_att"+i,def_ault);
            addArray.add(new Bunk(loadTitle,loadBunk,loadAtt));
        }
      return addArray;
    }

这是用于从 loadData 方法加载数据的代码

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup perent, Bundle savedInstanceState) {

    super.onCreateView(inflater, perent, savedInstanceState);
    View v = inflater.inflate(R.layout.fragment_main, perent, false);
        show=(ListView)v.findViewById(android.R.id.list);
    addArray=loadData();
    adapter=new BunkAdapter(addArray);
    show.setAdapter(adapter);
    return v;
}

【问题讨论】:

标签: android android-sharedpreferences


【解决方案1】:

首先,使用 editor.commit(); 将数据放入后保存,或者直接:editor.putString("Title"+i, b.getTitle()).commit(); 其次,我相信你想错了,共享首选项更适合设置或少量数据,在你的情况下,你应该使用 SQLite 来保存大数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多