2016-06-22 2 views
1

Я использую следующий помощник, чтобы сохранить пользовательский ввод sharedpreference:принести целое значение от sharedpreference

protected void storeData(SharedPreferences.Editor editor, 
          String key, EditText et) { 
     String content = et.getText().toString(); 
     if ("".equals(content)||" ".equals(content)) { 
      editor.remove(key); 
     } else { 
      editor.putString(key, content); 
     } 
    } 

затем

number1 = (EditText)findViewById(R.id.number1); 
SharedPreferences sharedPreferences = getSharedPreferences("Database", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPreferences.edit(); 

storeData(editor,"number1", number1); 
editor.commit(); 

Я хотел бы спросить, как я могу получить это значение как целое число, затем используйте его для некоторых вычислений. Я искал или нашел this, нашел, что они используют editor.putInt(key,content);

Но возможно ли извлечь значение как целое прямо из моего метода? спасибо.

+0

umm, 'SharedPreferences.getInt (...)'? –

+0

Я пробовал, но он не работает. – GentleG

+0

Довольно уверен, что он работает, иначе Android SDK будет сломан. Мы не знаем, что делает ваш метод 'storeData()'. Вы также показываете, как вы пытаетесь его получить. –

ответ

1

Ваш метод storeData() устанавливает строку (putString()). Общие префиксы хранят типизированные значения, совершенно разные. То есть вы не можете поместить «1» в виде строки, а затем получите ее позже как целое число.

Необходимо последовательно использовать put/getInt(). В качестве альтернативы вы можете сохранить его как строку и снова последовательно использовать его как строку и принуждать его к int, как вам нужно.

1

Ваш действительно должен использовать putInt(), но вы также можете использовать Integer.parseInt("some string"), чтобы преобразовать значение String в целое число.

+0

как получить значение из sharepreference и связать его с integer.parseInt ? – GentleG

1

Использование editor.commit() внутри еще части

Предложение: использование editor.apply() вместо editor.commit() в качестве фиксации рукоятки задания на переднем плане, тогда как применять ручки, которые асинхронно.

+0

Я попробовал это вместе с SharedPreferences.getInt (...), но он не будет работать. – GentleG

+0

Не используйте SharedPreferences напрямую. Используйте как редактирование общих предпочтений объекта ob. https://developer.android.com/reference/android/content/SharedPreferences.html – Uvneshkumar

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