2017-01-06 40 views
-2

這是我savaData和loadData方法是用來保存和加載數據sharedpreferences沒有保存或加載我的數據的Android

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; 
} 
+0

歡迎來到Stack Overflow!你可以先參加[遊覽]並學習[問]一個很好的問題,然後創建一個[mcve]。這使我們更容易幫助你。 – Katie

回答

1

首先,使用editor.commit();保存數據後,或直接:editor.putString("Title"+i, b.getTitle()).commit(); 其次,我認爲你的想法是錯誤的,共享偏好設置或少量數據的東西更好,在你的情況下,你應該使用SQLite來保存大量的數據。

相關問題