After adding a splash screen to my app, the text of my setPositiveButton – “Finish” – has stopped appearing. Where the “Finish” should appear, there’s a blank space. But clicking that blank space correctly executes the finishQuiz() method that contains the setPositiveButton.
Here’s the code for the splash screen:
package com.example.numbers;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import androidx.appcompat.app.AppCompatActivity;
public class SplashScreen extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(SplashScreen.this, MainActivity.class));
finish();
}
}, 7000);
}
}
Can anyone see why the addition of a splash screen has prevented the setPositiveButton text (“Finish”) appearing?
Here’s my MainActivity file, which contains the setPositiveButton:
package com.example.numbers;
import android.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
TextView questionTextView;
TextView totalQuestionTextView;
Button ansA,ansB,ansC,ansD;
Button btn_submit;
int score=0;
int totalQuestion = QuestionAnswer.question.length;
int currentQuestionIndex =0;
String selectedAnswer="";
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
totalQuestionTextView = findViewById(R.id.total_question);
questionTextView = findViewById(R.id.question);
ansA = findViewById(R.id.ans_a);
ansB = findViewById(R.id.ans_b);
ansC= findViewById(R.id.ans_c);
ansD = findViewById(R.id.ans_d);
btn_submit = findViewById(R.id.btn_submit);
ansA.setOnClickListener(this);
ansB.setOnClickListener(this);
ansC.setOnClickListener(this);
ansD.setOnClickListener(this);
btn_submit.setOnClickListener(this);
totalQuestionTextView.setText("You have "+totalQuestion +" questions to answer");
loadNewQuestion();
}
private void loadNewQuestion(){
if(currentQuestionIndex == totalQuestion){
finishQuiz();
return;
}
questionTextView.setText(QuestionAnswer.question[currentQuestionIndex]);
ansA.setText(QuestionAnswer.choices[currentQuestionIndex][0]);
ansB.setText(QuestionAnswer.choices[currentQuestionIndex][1]);
ansC.setText(QuestionAnswer.choices[currentQuestionIndex][2]);
ansD.setText(QuestionAnswer.choices[currentQuestionIndex][3]);
selectedAnswer="";
}
private void finishQuiz(){
String passStatus;
if(score >= totalQuestion*0.6){
passStatus = "You passed - well done!";
}else{
passStatus = "You failed this time - but keep trying!";
}
new AlertDialog.Builder(this)
.setTitle(passStatus)
.setMessage("You scored "+score+" out of "+totalQuestion)
.setCancelable(false)
.setPositiveButton("Finish",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
moveTaskToBack(true);
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
})
.show();
}
private void restartQuiz(){
score = 0;
currentQuestionIndex=0;
loadNewQuestion();
}
@Override
public void onClick(View view){
ansA.setBackgroundColor(Color.WHITE);
ansB.setBackgroundColor(Color.WHITE);
ansC.setBackgroundColor(Color.WHITE);
ansD.setBackgroundColor(Color.WHITE);
Button clickedButton = (Button) view;
if(clickedButton.getId() == R.id.btn_submit) {
if(!selectedAnswer.isEmpty()){
if(selectedAnswer.equals(QuestionAnswer.correctAnswers[currentQuestionIndex])){
score++;
}else{
clickedButton.setBackgroundColor(Color.MAGENTA);
}
currentQuestionIndex++;
loadNewQuestion();
}else{
}
}
else{
selectedAnswer=clickedButton.getText().toString();
clickedButton.setBackgroundColor(Color.YELLOW);
}
}
private class OnClickListener implements DialogInterface.OnClickListener {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
}
}
In the attached image, the space where the “Finish” should appear is circled in red.
1