我想做一个结果活动,我可以在其中存储测验游戏的各种类/活动的结果。因此,例如,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?预先感谢!
答案 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