2013-04-21 3 views
0

У меня есть список в режиме выбора, и он работает. Я хочу сохранить этот отмеченный элемент для общего предпочтения, а затем использовать его в другом действии. Но мои SharedPreferences не сохраняют мою строку правильно и сохраняют другой файл DATA_Preferences, который я никогда не вызываю в своем коде. В результате моя Следующая активности получить неверное значение ..Почему My SharedPreference создает другое имя файла DATA_Preferences?

Вот мой код, который я использую, чтобы сохранить свою строку и назовите его использовать другую деятельность:

public void onClick(View v) { 

      SparseBooleanArray checked = listView.getCheckedItemPositions(); 
      ArrayList<DBLokasi> selectedItems = new ArrayList<DBLokasi>(); 

      // Item position in adapter 
      SharedPreferences prefs = getSharedPreferences("DATA_COOR", Context.MODE_PRIVATE); 
      SharedPreferences.Editor prefsEditor = prefs.edit(); 

      for (int i = 0; i < checked.size(); i++) { 


       int position = checked.keyAt(i); 
       // Add slected if truee 
       if (checked.valueAt(i)) 
        selectedItems.add(adapter.getItem(position)); 

       prefsEditor.putFloat(POINT_LATITUDE_KEY + i, Float.parseFloat(values.get(position).getLat())); 
       prefsEditor.putFloat(POINT_LONGITUDE_KEY + i, Float.parseFloat(values.get(position).getLng())); 


      } 
      prefsEditor.commit(); 

      String[] outputStrArr = new String[selectedItems.size()]; 



      for (int i = 0; i < selectedItems.size(); i++) { 
       outputStrArr[i] = String.valueOf(selectedItems.get(i)); 
      } 


      Bundle b = new Bundle(); 


      Location location = new Location("POINT_LOCATION"); 

      for (int i = 0; i < checked.size(); i++) { 

       location.setLatitude(prefs.getFloat(POINT_LATITUDE_KEY + i, 0)); 
       location.setLongitude(prefs.getFloat(POINT_LONGITUDE_KEY + i, 0)); 

       double latitude = prefs.getFloat(POINT_LATITUDE_KEY + i, 0); 
       double longitude = prefs.getFloat(POINT_LONGITUDE_KEY + i, 0); 
       prefsEditor.commit(); 

       b.putDouble("Latitude" + i, latitude); 
       b.putDouble("Longitude" + i, longitude); 



       } 

      int banyakPilih = checked.size(); 
      b.putInt("banyakPilih", banyakPilih); 

      Intent intent = new Intent(getApplicationContext(), 
        HasilPilihanActivity.class); 

      // Create a bundle object 
      b.putStringArray("selectedItems", outputStrArr); 

      // Add the bundle to the intent. 
      intent.putExtras(b); 

      // start the ResultActivity 
      startActivity(intent); 
     } 

я сохранить Prefernces в DATA_COOR.xml имя файла, оно сохраняет мою строку, но у меня есть другой файл, который сохраняет мои предпочтения с именем файла DATA_Preferences в моем проводнике. Некоторое тело может дать мне решение? Благодаря раньше ..

ответ

0

Определить частный SharedPreferences mediaPrefs = null;

поставить это на конструкторе mediaPrefs = this.getSharedPreferences("Testing", 1);

положить ниже метод источника:

public void storeStateString(String prefsKeys, Float prefsValue) { 
     SharedPreferences.Editor prefEditor = mediaPrefs.edit(); 
     prefEditor.putFloat(prefsKeys, prefsValue); 
     prefEditor.commit(); 
    } 

Используйте этот метод, чтобы сохранить состояние как:

storeStateString("POINT_LATITUDE_KEY"+i,Float.parseFloat(values.get(position).getLat()));

и теперь вы можете получить это предпочтение через:

Float finalValue = mediaPrefs.getFloat("POINT_LATITUDE_KEY1","2.0l"); 

где 2.0l это значение defalut если mediaPrefs равна нулю;

Дайте мне знать, если возникли проблемы.

Смежные вопросы