#android
#Android
Вопрос:
-
Я пытаюсь сохранить данные массива байтов в arraylist, которые отлично работали как,
SharedPreferences sPrefs=PreferenceManager.getDefaultSharedPreferences(FirstActivity.this); SharedPreferences.Editor sEdit=sPrefs.edit(); for(int i=0;i<byteArrayList.size();i ) { sEdit.putString("val" i,byteArrayList.get(i).toString()); } sEdit.putInt("size",byteArrayList.size()); sEdit.commit();
-
Я извлекаю данные массива байтов, используя,
SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(ViewImagesActivity.this); myAList=new ArrayList<byte[]>(); int size=sPrefs.getInt("size",0); for(int j=0;j<size;j ) { myAList.add(sPrefs.getString("val" j,"")); // giving error for type mismatch for byte[] and string }
- пожалуйста, помогите мне разобраться в этой проблеме..
- пожалуйста, скажите мне, есть ли какой-либо другой способ сохранения и извлечения для этого.
- Заранее благодарю вас
Ответ №1:
попробуйте приведенный ниже код:-
myAList.add(sPrefs.getString("val" j,null).getBytes(Charset.forName("UTF-8")));
Отображается ошибка, поскольку тип списка массива байтового массива
myAList=new ArrayList<byte[]>();
и вы добавляете значение string, поэтому выдает вашу ошибку.
Комментарии:
1. выдает эту ошибку: метод add(byte[]) в типе ArrayList<byte[]> неприменим для аргументов (String)
2. @user3707205 измените строку на массив байтов
3. У меня есть решение, брат.. Спасибо за вашу любезную помощь также … спасибо
Ответ №2:
Вы пытаетесь сохранить String
в списке Byte
типов:
myAList.add(sPrefs.getString("val" j,));
Вы можете использовать int
вместо Byte
. Существует стандартный метод putInt
и getInt
для хранения и извлечения данных в SharedPreferences
Комментарии:
1. Необходимо ли использовать массив байтов? Можете ли вы вместо этого использовать массив int?
Ответ №3:
Вы должны вызвать add
метод с byte[]
параметром. Обратная операция выполняется с String.getBytes
помощью метода, поэтому измените соответствующую строку вашего кода:
myAList.add(sPrefs.getString("val" j,"").getBytes());
Комментарии:
1. Ответ был помечен как низкое качество. Возможно, вы могли бы объяснить, как / почему код работает, чтобы гарантировать, что он не удален.
2. О, низкое качество? Тот, кто задает вопрос, поблагодарил меня за то, что он работает, и только за то, что я не был подробным в моем ответе, вы говорите, что это низкое качество? : D