Подведите итоги двух викторин и покажите их в меню - PullRequest
0 голосов
/ 20 апреля 2019

Итак, ребята, у меня есть две викторины, и когда пользователь делает их обе, я хочу показать в меню сумму очков пользователя. Вот часть моего кода, которая имеет отношение к моему вопросу:

Тест 1:

Intent intentt=new Intent(multiplechoicek1.this,menuaskisewn1.class);
intentt.putExtra("scoree",mscore);
startActivity(intentt);

Тест 2:

Intent intent=new Intent(diagwnismakefalaio1.this,menuaskisewn1.class);
intent.putExtra("score",mScore);
startActivity(intent);

Меню

Intent intent=getIntent();
int score=intent.getIntExtra("score",0);
Intent intentt=getIntent();
int scoree=intentt.getIntExtra("scoree",0);
int athroisma=score+scoree;
currentscore.setText("To σκορ σου είναι: "+ athroisma +"/24");

Когда я тестирую приложение, оно показывает только сумму правильных ответов 1 викторины ... я предполагаю, что это потому, что когда он вызывает метод oncreate, когда одна викторина превышает намерение из второй викторины, получает значение по умолчанию. Так что он не суммирует правильные ответы на оба теста. (Я не использовал sharedpreferences, потому что я не хочу хранить данные после закрытия приложения). Есть идеи? Спасибо и извините за плохой английский:)

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Непонятно, как и когда вы выполняете код для открытия действия menuaskisewn1, но кажется, что вы открываете его дважды, почему?
Затем, когда открывается menuaskisewn1, кажется, что вы хотите получить 2 разных намерения с:

Intent intent=getIntent();

но то, что вы делаете, - это получение одного и того же намерения дважды, и именно это намерение начало действия, потому что действие запускается только одним намерением .
Таким образом, это намерение содержит либо дополнительное с ключом "score", и оно сохраняется в score, либо дополнительное с ключом "scoree", и это сохраняется в scoree, но , но не оба .
Поэтому одна из переменных score или scoree равна 0, и при добавлении их результат совпадает с одной из переменных.

Что вы можете сделать, это запустить только один раз и добавить 2 дополнительных значения:

Intent intent=new Intent(multiplechoicek1.this,menuaskisewn1.class);
intent.putExtra("score1", mscore1);
intent.putExtra("score2", mscore2);
startActivity(intent);

и получите значения при открытии действия:

Intent intent=getIntent();
int score1=intent.getIntExtra("score1",0);
int score2=intent.getIntExtra("score2",0);
int athroisma=score1+score2;
currentscore.setText("To σκορ σου είναι: "+ athroisma +"/24");
0 голосов
/ 20 апреля 2019

Когда вы запускаете действие «menuaskisewn1» из «множественного выбора1» и «diagwnismakefalaio1» с помощью метода «startActivity», оно создаст новое действие «menuaskisewn1», а затем «menuaskisewn1» получит только дополнительные сведения из этого намерения, которое было вызвано последнимвремя.таким образом, у вас есть только одно дополнительное намерение вместо обоих одновременно.

Также вы не хотите сохранять данные в общем предпочтении.

В этом случае вы можете создать класс, который расширяет класс «Application», а затем взять две статические переменные внутри него.Таким образом, вы можете получить доступ к этим переменным в каждом действии, а также вы можете суммировать те две переменные, в которых когда-либо деятельности вы хотите.Используя этот способ, вам не нужно передавать их в намерениях.

Убедитесь, что ваш файл манифеста будет использовать этот класс приложения.

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