Я не могу сохранить целое число - PullRequest
0 голосов
/ 14 октября 2019

Я хочу сохранить счетчик в памяти моего приложения и показать его.

Я пробовал sharedpreferences и не работал.

public class MainActivity extends AppCompatActivity {
 SharedPreferences sharedPreferences;
    int counter = 0;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);

 button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {                    
               counter = counter + 1;
               tvCounter.setText(String.valueOf(counter));

            } 
        });
    }

    protected int Counter(View view) {    
        SharedPreferences settings = getSharedPreferences(String.valueOf(counter), 0);

        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt("int value", counter);
        editor.commit();
        sharedPreferences.getInt(String.valueOf(counter), -1);

        return 0;
    }
}

Счетчик работает, ноприложение не сохраняет ничего.

1 Ответ

0 голосов
/ 14 октября 2019

SharedPreferences сохраняет пару ключ-значение.

editor.putInt("int value", counter);

Вы сохраняете значение счетчика в ключе "int value".

И пытаетесь получить его по неправильному ключу

sharedPreferences.getInt(String.valueOf(counter), -1);

Вместо этого вы должны сделать

sharedPreferences.getInt("int value", -1);

Я думаю, вы также путаете имя файла настроек. Чтобы устранить путаницу, используйте final String в области видимости класса.

private final String prefsFileName = "counterFile"; // file name for your shared preferences.
private final String counterKey = "counter"; // key to identify counter in your preferences.

Чтобы сохранить значение счетчика в общих настройках, создайте метод.

 private boolean saveCounter(int counter){
    SharedPreferences prefs = getSharedPreferences(prefsFileName, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putInt(counterKey, counter);
    return editor.commit();
}

Чтобы получить значение счетчика из общих настроек, используйте другой метод. .

private int getCounterValue() {
    SharedPreferences prefs = getSharedPreferences(prefsFileName, Context.MODE_PRIVATE);
    return prefs.getInt(counterKey, -1);
}
...