我只是创建一个简单的测验应用程序。而且工作很酷。即便如此,当您使用分数到达问题的最后时,我只需在 AlertDialog 下添加"关闭应用程序" 。但我想在Close Application旁添加一个功能。我想添加"重启" 所以当用户点击重启时,他们就可以再次玩问答游戏。我该怎么做?
public class MainActivity extends Activity {
// TODO: Declare member variables here:
Button mTrueButton;
Button mFalseButton;
TextView mQuestionTextView;
int mIndex;
int mQuestion;
int mScore;
TextView mScoreTextView;
ProgressBar mProgressBar;
// TODO: Uncomment to create question bank
private TrueFalse[] mQuestionBank = new TrueFalse[] {
new TrueFalse(R.string.question_1, true),
new TrueFalse(R.string.question_2, true),
new TrueFalse(R.string.question_3, true),
new TrueFalse(R.string.question_4, true),
new TrueFalse(R.string.question_5, true),
new TrueFalse(R.string.question_6, false),
new TrueFalse(R.string.question_7, true),
new TrueFalse(R.string.question_8, false),
new TrueFalse(R.string.question_9, true),
new TrueFalse(R.string.question_10, true),
new TrueFalse(R.string.question_11, false),
new TrueFalse(R.string.question_12, false),
new TrueFalse(R.string.question_13,true)
};
// TODO: Declare constants here
final int PROGRESS_BAR_INCREMENT = (int)Math.ceil (100.0/ mQuestionBank.length);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTrueButton = (Button) findViewById(R.id.true_button);
mFalseButton = (Button) findViewById(R.id.false_button);
mQuestionTextView = (TextView) findViewById(R.id.question_text_view);
mScoreTextView = (TextView) findViewById(R.id.score);
mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
mQuestion = mQuestionBank[mIndex].getQuestionID();
mQuestionTextView.setText(mQuestion);
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkAnswer(true);
updateQuestion();
}
});
mFalseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkAnswer(false);
updateQuestion();
}
});
}
private void updateQuestion(){
mIndex = (mIndex + 1) % mQuestionBank.length;
if (mIndex == 0){
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Game Over");
alert.setCancelable(false);
alert.setMessage("You scored " + mScore + " points!");
alert.setPositiveButton("Close Application", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
alert.show();
}
mQuestion = mQuestionBank[mIndex].getQuestionID();
mQuestionTextView.setText(mQuestion);
mScoreTextView.setText("Score " + mScore + "/" + mQuestionBank.length);
mProgressBar.incrementProgressBy(PROGRESS_BAR_INCREMENT);
}
private void checkAnswer(boolean userSelection){
boolean correctAnswer = mQuestionBank[mIndex].isAnswer();
if (userSelection == correctAnswer){
Toast.makeText(getApplicationContext(),R.string.correct_toast,Toast.LENGTH_SHORT).show();
mScore = mScore + 1;
}else{
Toast.makeText(getApplicationContext(),R.string.incorrect_toast,Toast.LENGTH_SHORT).show();
}
}
}
这是最终结果/解决方案
public class MainActivity extends Activity {
// TODO: Declare member variables here:
Button mTrueButton;
Button mFalseButton;
TextView mQuestionTextView;
int mIndex;
int mQuestion;
int mScore;
TextView mScoreTextView;
ProgressBar mProgressBar;
// TODO: Uncomment to create question bank
private TrueFalse[] mQuestionBank = new TrueFalse[] {
new TrueFalse(R.string.question_1, true),
new TrueFalse(R.string.question_2, true),
new TrueFalse(R.string.question_3, true),
new TrueFalse(R.string.question_4, true),
new TrueFalse(R.string.question_5, true),
new TrueFalse(R.string.question_6, false),
new TrueFalse(R.string.question_7, true),
new TrueFalse(R.string.question_8, false),
new TrueFalse(R.string.question_9, true),
new TrueFalse(R.string.question_10, true),
new TrueFalse(R.string.question_11, false),
new TrueFalse(R.string.question_12, false),
new TrueFalse(R.string.question_13,true)
};
// TODO: Declare constants here
final int PROGRESS_BAR_INCREMENT = (int)Math.ceil (100.0/ mQuestionBank.length);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTrueButton = (Button) findViewById(R.id.true_button);
mFalseButton = (Button) findViewById(R.id.false_button);
mQuestionTextView = (TextView) findViewById(R.id.question_text_view);
mScoreTextView = (TextView) findViewById(R.id.score);
mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
mQuestion = mQuestionBank[mIndex].getQuestionID();
mQuestionTextView.setText(mQuestion);
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkAnswer(true);
updateQuestion();
}
});
mFalseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkAnswer(false);
updateQuestion();
}
});
}
private void updateQuestion(){
mIndex = (mIndex + 1) % mQuestionBank.length;
if (mIndex == 0){
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Game Over");
alert.setCancelable(false);
alert.setMessage("You scored " + mScore + " points!");
alert.setPositiveButton("Close Application", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
alert.setNegativeButton("Restart", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
onRestart();
}
});
alert.show();
}
mQuestion = mQuestionBank[mIndex].getQuestionID();
mQuestionTextView.setText(mQuestion);
mScoreTextView.setText("Score " + mScore + "/" + mQuestionBank.length);
mProgressBar.incrementProgressBy(PROGRESS_BAR_INCREMENT);
}
private void checkAnswer(boolean userSelection){
boolean correctAnswer = mQuestionBank[mIndex].isAnswer();
if (userSelection == correctAnswer){
Toast.makeText(getApplicationContext(),R.string.correct_toast,Toast.LENGTH_SHORT).show();
mScore = mScore + 1;
}else{
Toast.makeText(getApplicationContext(),R.string.incorrect_toast,Toast.LENGTH_SHORT).show();
}
}
}
答案 0 :(得分:3)
alert.setNegativeButton("Restart", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
yourRestartFunction();
}
});
- 或 -
alert.setNeutralButton("Restart", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
yourRestartFunction();
}
});