Попытка передать данные через пакет всегда приводит к нулю

#java #android #android-studio #android-intent

#Ява #Android #android-студия #android-намерение

Вопрос:

поэтому я пытаюсь создать приложение для Android, которое случайным образом нажимает кнопку на экране, и пользователь должен нажать кнопку, чтобы получить лучший результат, но есть таймер, и когда он достигает 0, он должен начать новое действие, которое показывает окончательный результат.

Я реализовал таймер обратного отсчета, который при onFinish() запуске запускает новое действие с намерением, которое также отправит переменную оценки в новое действие.

Дело в том, что все это хорошо работает, за исключением того, что при использовании toast.makeText я вижу, что переданная переменная равна нулю.

вот мой код для таймера обратного отсчета

 new CountDownTimer(timeleftinmilliseconds, 1000) {   public void onTick(long millisUntilFinished) {  countdownText.setText(" time left : "   millisUntilFinished / 1000);  timeleftinmilliseconds=millisUntilFinished;  }   public void onFinish() {  Intent finalintent;   finalintent = new Intent(PlayTime.this,ScoreScreen.class);  finalintent.putExtra("key",score);    startActivity(finalintent);  }   }.start();  

и это код из действия на экране оценки, который получает оценку (теперь сохранен в предыдущей версии).

 void Capture(){   Bundle bundle = getIntent().getExtras();  String previousscore = bundle.getString("key");  Toast.makeText(getApplicationContext(), "" previousscore, Toast.LENGTH_SHORT).show();  }  

спасибо вам за любую помощь!

Комментарии:

1. Ты пробовал bundle.getStringExtra("key") вместо этого?

2. Какого типа ваша score переменная? Это а String ?

Ответ №1:

Вы получаете в виде строки, но передаете целое число в виде балла . Поэтому вам нужно получить целое число .измените код таким образом , он будет работать.

 Bundle bundle = getIntent().getExtras();  int previousscore = bundle.getInt("key");  Toast.makeText(getApplicationContext(), "" previousscore, Toast.LENGTH_SHORT).show();  

Ответ №2:

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

 Intent intent = getIntent();  int previousscore = intent.getIntExtra(“key”);  Toast.makeText(getApplicationContext(), "" previousscore, Toast.LENGTH_SHORT).show();