如何针对各种类别进行一项结果活动

时间:2018-08-26 15:01:56

标签: java android android-intent

我想做一个结果活动,我可以在其中存储测验游戏的各种类/活动的结果。因此,例如,Lvl 1,Lvl 2和Lvl 3的得分结果应该显示在一个结果Activity上。

现在这是我为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!!");
    }

问题是,如果我精通Lvl 1,就不会告诉我Lvl 1.java的结果。它总是说我已经达到0分。相反,如果我播放Lvl2,它将显示正确的结果。还是我必须为每个Lvl.java做一个resultActivity.java?预先感谢!

2 个答案:

答案 0 :(得分:1)

  

问题是,如果我精通Lvl 1,就不会告诉我Lvl 1.java的结果。它总是说我已经达到0分。相反,如果我播放Lvl2,它会向我显示正确的结果。

很好的问题,但是,这就是代码的编写方式。请记住,java / kotlin是从上到下编译的。因此,您的代码会将 punkteanzahl 的文本设置两次。

  

我必须为每个Lvl.java做一个resultActivity.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");


建议
我将分享一个您可以做的漂亮技巧,只需使用一个键即可获得最终分数。然后使用它来传递来自不同级别的所有分数。这样,您在ResultActivity.java上的代码较少,并且仍然可以使用。

答案 1 :(得分:0)

您是否读过有关片段的信息? 我也在做一些事情,我将使用它们,将它们加载到同一活动上: 信息: https://developer.android.com/guide/components/fragments?gclid=Cj0KCQjwn4ncBRCaARIsAFD5-gWOjoEJj6UIEFZQXsOMQfMNDqb4dzrVstCsRohbVJ-7lPHzOBJTHhAaArrTEALw_wcB