Android проблема студии продолжает увеличивать счетчик - PullRequest
1 голос
/ 17 января 2020

Я пытаюсь стать частью игры, в которой при нажатии на потрясающую иконку TextView увеличиваются числа. Начинается с нуля и увеличивается на единицу. Я попытался сохранить число, чтобы найти его в следующий раз, запустить приложение и продолжить его увеличивать. Я новичок в сохранении, и я немного искал его.

Я написал код, в котором хранится число, когда я закрываю его и открываю снова, но когда я нажимаю sh значок потрясающего файла, он начинается с начала, а не с номера, который я сохранил. Возможно, я не очень хорошо понял код сохранения, как он работает. Может кто-нибудь мне помочь? Спасибо !!

Мой код в MainActivity:

int newAge;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        final TextView age  = (TextView) findViewById(R.id.age);

        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                newAge++;
                age.setText(String.valueOf(newAge));
            }
        });

        //getting preferences
        SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
        int savedAge = prefs.getInt("key", 0); //0 is the default value
        age.setText(String.valueOf(savedAge));

    }
    @Override
    protected void onStop(){
        super.onStop();
        SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putInt("key", newAge);
        editor.commit();
    }

1 Ответ

3 голосов
/ 17 января 2020

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

int newAge;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    final TextView age  = (TextView) findViewById(R.id.age);

    //getting preferences
    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    int savedAge = prefs.getInt("key", 0); //0 is the default value
    age.setText(String.valueOf(savedAge));
    newAge = savedAge; //set the age value, to further increase it by a button click

    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            newAge++;
            age.setText(String.valueOf(newAge));
        }
    });



}
@Override
protected void onStop(){
    super.onStop();
    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putInt("key", newAge);
    editor.commit();
}

Попробуйте прочитать это , чтобы лучше понять SharedPreferences в Android.

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