2013-03-10 2 views
0

У меня есть счетчик на экране, который начинается в 100, и когда он щелкнул, он вниз один. Я хочу, что, когда я закрыть приложение и открыть его снова, то счетчик будет оставаться так же, как раньше, и не будет сброшено на 100.Сохранение значения int после закрытия приложения

(К сожалению о плохом английском ...)

+0

Использование 'SharedPreferences' для этого будет путь – mango

+0

@itay Lael Сохранить sharedPreferences в 'onDestroy' и получить значение в' onCreate' ... –

+0

@TGMCians: В таких случаях вы не должны рекомендовать использование 'onDestroy()'. Бывают случаи, когда его никогда не называют. Источник: http://developer.android.com/reference/android/app/Activity.html#onDestroy() –

ответ

1

Вы можете использовать SharedPreferences, чтобы достичь того, чего вы хотите. Установите count, выйдя из приложения и, открыв его, извлеките его оттуда.

Например, о том, как это использовать, проверьте это out.

+0

Спасибо! Помог мне много! Еще один маленький вопрос, где я пишу это? onCreate or onPuse? –

+0

@itaylael: хранить в 'onPause' и вернуть его в' onCreate' – Swayam

1

Вы можете сделать что-то вроде этого:

В onPause(), используйте этот код, чтобы сохранить значение счетчика в SharedPreference файл

SharedPreferences sharedPrefs = getApplicationContext().getSharedPreferences(PREFERENCE_FILE_NAME, Context.MODE_PRIVATE); 
Editor editor = sharedPrefs.edit(); 
editor.putInt(KEY_NAME, THE_INTEGER_VALUE); 
// Replace `putInt` with `putString` if your value is a String and not an Integer. 
editor.commit(); 
  1. Заменить PREFERENCE_FILE_NAME используемые выше, чтобы выбрать файл XML , который будет создан для хранения значения в.
  2. KEY_NAME, используемый выше, является ключом, который будет использоваться для доступа (для сохранения и чтения из имени файла SharedPreference d в пункте 1.) Это часть пары Key-Value, используемой в SharedPreferences.
  3. THE_INTEGER_VALUE - фактическое значение.

И в onResume(), вы можете извлечь значение обратно и отображать его:

SharedPreferences sharedPrefs = getApplicationContext().getSharedPreferences(PREFERENCE_FILE_NAME, Context.MODE_PRIVATE); 
int counter = sharedPrefs.getInt(KEY_NAME, 0); 
// Replace the `int counter` with `String counter` if your value is a String and not an Integer. 
// Also, replace the `getInt` with `getString` 

Вы можете использовать int counter позже для отображения в TextView возможно.

+0

Awesome !! ваши отличные парни спасибо –

+0

@itaylael: Добро пожаловать. ;-) –

+0

Чувак у меня есть еще один вопрос, который я не понимал .... если я ставлю значение SharedPreferences String, как я получаю от него значение моего счета? и значение String Должно быть что-то особенное или просто писать в нем что-то? –

0

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

private final String NUMBER = "Number"; 
private final String PROFILE = "Profile"; 

SharedPreferences a = FirstActivity.this.getSharedPreferences("a", MODE_PRIVATE); 
SharedPreferences.Editor prefsEditorProfiles = a.edit(); 
prefsEditorProfiles.putInt(Profile, 1); 
prefsEditorProfiles.putInt(Number, 1); 
prefsEditorProfiles.commit(); 

Затем восстановить SharedPreferences в других Activity:

SharedPreferences a = SecondActivity.this.getSharedPreferences("a", MODE_PRIVATE); 
int ab = a.getInt(Number, 0); 
0

Используйте привилегированную акцию в качестве doc example изменяется на значение считывания/записи int:

public class Calc extends Activity { 
    public static final String PREFS_NAME = "MyPrefsFile"; 

    @Override 
    protected void onCreate(Bundle state){ 
     super.onCreate(state); 
     . . . 

     // Restore preferences 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     int lastIndex = settings.getInt("yournumbername", 100); 
     setLastIndex(lastIndex); 
    } 

    @Override 
    protected void onStop(){ 
     super.onStop(); 

     // We need an Editor object to make preference changes. 
     // All objects are from android.context.Context 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putInt("yournumbername", mlastIndex); 

     // Commit the edits! 
     editor.commit(); 
    } 
} 
Смежные вопросы