Как выполнить одно задание для различных классов - PullRequest
0 голосов
/ 26 августа 2018

Я хотел бы сделать результат деятельности, где я могу хранить результаты различных классов / деятельности моей игры викторины. Так, например, результат оценки Уровня 1, Уровня 2 и Уровня 3 должен быть показан в одном результате.

Прямо сейчас это мой короткий код для Lvl1.java и Lvl2.java:

.

Lvl1.java:

trueBtn.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(DialogInterface dialog, int which) {
                            if (updateMyQuestAndAnsw == Questions.QuestionsKlasse1.length){

                                Intent iresultActivity = new Intent(Class1.this, ResultClass.class);

                                iresultActivity.putExtra("finaleScore",updateMyScoreTextView );
                                Class1.this.finish();
                                startActivity(iresultActivity);

Lvl2.java:

trueBtn.setOnClickListener(new View.OnClickListener() {
            @Override
     public void onClick(DialogInterface dialog, int which) {
                                if (updateMyQuestAndAnsw == Questions.QuestionsKlasse2.length){

                                    Intent iresultActivity = new Intent(Class2.this, ResultClass.class);

                                    iresultActivity.putExtra("finaleScore2",updateMyScoreTextView );
                                    Class2.this.finish();
                                    startActivity(iresultActivity);

Теперь это мой ResultActivity.java, где должен быть показан результат игры:

////////////Result of Lvl 1
    final int score = getIntent().getIntExtra("finaleScore", 0);

        punkteanzahl.setText("You gained " + score + " out of " + Questions.QuestionsKlasse1.length + " points");

    if (score <= 15 && score >= 12) {
        note.setText("Note: 1 - Very good");
        bestanden.setText("Text Text!");

    } else if (score <= 12 && score >= 9) {
        note.setText("Note: 2 - Good");
        bestanden.setText("Text Text...!");

    } else if (score <= 9 && score >= 5) {
        note.setText("Note: 3 - It´s ok!");
        bestanden.setText("Text.....!");

    } else if (score <= 4 && score >= 3) {
        note.setText("Note: 4 - Not so good");
        bestanden.setText("Text--...!");

    } else if (score < 3) {
        note.setText("Note: 5 - Very Bad");
        bestanden.setText("Text.....!");

    }

    ////////////Result of Lvl 2
    final int score2 = getIntent().getIntExtra("finaleScore2", 0);

        punkteanzahl.setText("You gained " + score2 + " out of " + Questions.QuestionsKlasse2.length + " points");

    if (score2 <= 15 && score2 >= 12) {
        note.setText("Note: 1 - Very good");
        bestanden.setText("Text Text!");
    } else if (score2 <= 12 && score2 >= 9) {
        note.setText("Note: 2 - Good");
        bestanden.setText("Text Text!");
    } else if (score2 <= 9 && score2 >= 5) {
        note.setText("Note: 3 - It´s ok");
        bestanden.setText("Text Text!!");
    } else if (score2 <= 4 && score2 >= 3) {
        note.setText("Note: 4 - Not so good");
        bestanden.setText("Text Text!!");
    } else if (score2 < 3) {
        note.setText("Note: 5 - Very Bad");
        bestanden.setText("Text Text!!");
    }

Проблема в том, что если я закончу с 1-го уровня, он не покажет мне результат 1-го уровня. Это всегда говорит, что я набрал 0 очков. Вместо этого, если я играю на Lvl2, это показывает мне правильный результат. Или я должен сделать один resultActivity.java для каждого Lvl.java? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Проблема в том, что если я закончу с 1-го уровня, он не покажет мне результат 1-го уровня.Это всегда говорит, что я набрал 0 очков.Вместо этого, если я играю на Lvl2, это показывает мне правильный результат.

Хорошая проблема, но так написан код.Имейте в виду, что java / kotlin компилируется сверху вниз.Таким образом, ваш код будет устанавливать текст для punkteanzahl дважды.

должен ли я сделать один resultActivity.java для каждого Lvl.java

Нет, на самом деле, использование только одного результата деятельности - это хорошо.И вы можете сделать это с Lvl также.Но я не советую вам еще копаться.Я заметил, что вы новичок и, скорее всего, не так много знаний о Java.Могу ли я предложить вам сначала начать с базового :) TL; DR Установите значения по умолчанию от getIntExtra до -1, затем проверьте, не является ли счет -1, прежде чем задавать его в тексте, например:

final int score = getIntent().getIntExtra("finaleScore", -1);
if (score != -1) punkteanzahl.setText("You gained " + score + " out of " + Questions.QuestionsKlasse1.length + " points");

Предложение * * 1023Я поделюсь одним изящным трюком, который вы могли бы сделать, просто используйте один ключ для окончательного результата.Затем используйте это, чтобы пройти все баллы с разных уровней.Таким образом у вас будет меньше кода на ResultActivity.java, и он все равно будет работать.

0 голосов
/ 26 августа 2018

Вы когда-нибудь читали о фрагментах?Я тоже что-то делаю, и я буду использовать их, чтобы загрузить ту же активность: Информация: https://developer.android.com/guide/components/fragments?gclid=Cj0KCQjwn4ncBRCaARIsAFD5-gWOjoEJj6UIEFZQXsOMQfMNDqb4dzrVstCsRohbVJ-7lPHzOBJTHhAaArrTEALw_wcB

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