我正在为我的班级做一个测验应用程序,询问10个问题,然后在最后一个问题后给出结果。
我已经能够设置测验没有问题,但我无法让Intent工作到下一个屏幕来显示我的分数。我不知道我是不是已经疯了,或者我今天已经盯着我的电脑太久了。
public class MainActivity extends AppCompatActivity {
private QuestionLibrary mQuestionLibrary = new QuestionLibrary();
private TextView mQuestionView;
private Button mButtonChoice1;
private Button mButtonChoice2;
private Button mButtonChoice3;
private String mAnswer;
private int mScore = 0;
private int mQuestionNumber = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mQuestionView = (TextView) findViewById(R.id.question);
mButtonChoice1 = (Button) findViewById(R.id.button1);
mButtonChoice2 = (Button) findViewById(R.id.button2);
mButtonChoice3 = (Button) findViewById(R.id.button3);
updateQuestion();
mButtonChoice1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mButtonChoice1.getText() == mAnswer) {
mScore = mScore + 1;
updateQuestion();
} else {
updateQuestion();
}
}
});
mButtonChoice2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mButtonChoice2.getText() == mAnswer) {
mScore = mScore + 1;
updateQuestion();
} else {
updateQuestion();
}
}
});
mButtonChoice3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mButtonChoice3.getText() == mAnswer) {
mScore = mScore + 1;
updateQuestion();
} else {
updateQuestion();
}
}
});
Intent intent = new Intent(this, ResultActivity.class);
startActivity(intent);
}
public void setScore(int score) {
mScore = score;
}
public int getScore() {
return mScore;
}
private void updateQuestion() {
mQuestionView.setText(mQuestionLibrary.getQuestion(mQuestionNumber));
mButtonChoice1.setText(mQuestionLibrary.getChoice1(mQuestionNumber));
mButtonChoice2.setText(mQuestionLibrary.getChoice2(mQuestionNumber));
mButtonChoice3.setText(mQuestionLibrary.getChoice3(mQuestionNumber));
mAnswer = mQuestionLibrary.getCorrectAnswer(mQuestionNumber);
mQuestionNumber++;
}
}
然后我的结果活动,我应该显示最终得分。
public class ResultActivity extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
}
public void results(View view) {
TextView results = (TextView) findViewById(R.id.score);
results.setText(getScore());
}
}
答案 0 :(得分:1)
上述代码的问题在于,一旦启动MainActivity,就会创建一个启动ResultActivity的意图。我的建议是在测验结束时创建更改活动的意图。您可以通过创建一个函数并在测验结束时调用该函数或者在您的情况下问题的计数器等于10来实现。此外,您可以在MainActivity中声明一个名为score的静态变量,ResultActivity可以访问该变量而无需创建MainActivity对象。
像这样 -
public void changeActivity(){
Intent intent = new Intent(this, ResultActivity.class);
startActivity(intent);
}
答案 1 :(得分:0)
从MainActivity的onCreate()方法
移动它Intent intent = new Intent(this, ResultActivity.class);
startActivity(intent);
到
private void updateQuestion() {
mQuestionView.setText(mQuestionLibrary.getQuestion(mQuestionNumber));
mButtonChoice1.setText(mQuestionLibrary.getChoice1(mQuestionNumber));
mButtonChoice2.setText(mQuestionLibrary.getChoice2(mQuestionNumber));
mButtonChoice3.setText(mQuestionLibrary.getChoice3(mQuestionNumber));
mAnswer = mQuestionLibrary.getCorrectAnswer(mQuestionNumber);
mQuestionNumber++;
Intent intent = new Intent(this, ResultActivity.class);
startActivity(intent);
}
答案 2 :(得分:0)
你应该像下一样参与下一个活动。并且应该传递像这样的值
Intent intent = new Intent(this, ResultActivity.class);
intent.putExtra("score",mscore);
startActivity(intent);
在ResultActivity
Intent intent=getIntent();
results.setText(intent.getIntExtra("score",0));
这是因为您没有将任何值传递给下一个活动。请参阅this。并且您正在制作一个开始意图(在创建活动中产生的意图),它不会将您的结果传递给下一个答案。你应该在比赛结束后开始活动。
答案 3 :(得分:0)
我认为您应该尝试一下。
string_params