2016-06-13 2 views
0

В моем первом приложении я собираю простое приложение-счетчик, где пользователь нажимает кнопку, чтобы добавить одну точку в переменную int. Я попытался сохранить количество кнопок навсегда в качестве предпочтения для общего доступа, но результат не сохраняется и сбрасывается на 0 при каждом запуске приложения. Вот мой код. Я очень ценю, если вы мне поможете.Как сохранить int в SharedPreferences

public class counter extends AppCompatActivity { 

    public int greed; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     SharedPreferences counter = getApplicationContext().getSharedPreferences("uk.me.forus.lifetracker", Context.MODE_PRIVATE); 
     counter.edit().putInt("greed", greed).apply(); 
     Log.i("Test: ", Integer.toString(counter.getInt("greed", greed))); 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_counter); 
    } 

    public void greed (View view){ 

     greed += 1; 

    } 
} 
+0

можно отметить, что тип ошибки вы получаете –

+0

Hi Ragul - я получаю какие-либо ошибки, как это. Проблема в том, что значение «greed» varaible не сохраняется в общих предпочтениях. – Ali

+0

переместите команду super.onCreate и setContentView вверх, прежде чем использовать общие предпочтения. –

ответ

0

Вы спасая greed в методе onCreate() в самом начале. В то время значение переменной greed равно 0, поскольку она еще не была инициализирована. Поэтому это значение 0 сохраняется. После этого вы никогда не будете обновлять значение жадности. Поэтому остается 0.

Попробуйте это:

private int greed; 
private SharedPreferences counter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_counter); 

    counter = getApplicationContext().getSharedPreferences("uk.me.forus.lifetracker", Context.MODE_PRIVATE); 

    //start the value of greed from what it was earlier. 
    greed = counter.getInt("greed",0); 

} 

public void greed (View view){ 

    greed += 1; 

    //update and print the value of greed everytime you increment it: 
    counter.edit().putInt("greed", greed).apply(); 
    Log.i("Test: ", Integer.toString(counter.getInt("greed", greed))); 

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