Ошибка putExtra/getExtra

Я хочу передать число coin из одной activity в другую. Использую для этих целей putExtra/getExtra. Но это не работает. В чём моя ошибка, что я делаю не так?

Активити 1:

buttonYes.setOnClickListener(v -> {
    try {

       int coin = 5;
        Intent intent = new Intent(EndGame.this, MainActivity.class);
        intent.putExtra("coinsKey", coin);
     
    
    } catch (Exception e) {

    }
});



//Button Menu
buttonMenu.setOnClickListener(v -> {
    try {
        Intent intent = new Intent(EndGame.this, MainActivity.class);
        int extra = coinsSave.getInt(APP_PREFERENCES_COINS_FINAL, coin);
        intent.putExtra("coinsKey", extra);
        startActivity(intent);
        finish();
    } catch (Exception e) {

    }

Активити 2:

TextView coinInt = (TextView) findViewById(R.id.coinInt);
Intent intentExtras = getIntent();
   int extras = intentExtras.getIntExtra("coinsKey", 0);
int coins1 = coins + extras;
coinInt.setText(String.valueOf(coins1));

Пользователь нажимает кнопку "Да", затем кнопку возврата в меню и в меню должно появиться 5 монет в TextView. Но вместо этого там остаётся по-прежнему 0.


Ответы (2 шт):

Автор решения: ЮрийСПб

Судя по всему вы используете разные файлы для хранения и чтения из префов. Получение SharedPreferences из контекста (context.getSharedPreferences("coins", MODE_PRIVATE)) создаёт экземпляр привязанный к активити и только в ней доступный. Соответственно, в другой активити вы этот файл прочитать не сможете.

Используйте глобальные префы во всех актвиити. Вот так можно их получить:

PreferenceManager.getDefaultSharedPreferences(context)
→ Ссылка
Автор решения: doomsilka

Вы в первой активити не сохраняете значение.

int coin = 5;
        Intent intent = new Intent(EndGame.this, MainActivity.class);
        intent.putExtra("coinsKey", coin);

Тут вы запихиваете значение в в интент, но сам интент никак не испльзуете.

→ Ссылка