Форум для тех, кто программирует под Android
Anonymous
SetPositiveButton работает, но текстовая строка не появляется
Сообщение
Anonymous » 02 дек 2024, 15:38
Мой setPositiveButton работает в моем приложении, но текст, который должен появиться при нажатии («Готово»), не появляется.
Поэтому, когда я нажимаю на пробел в приложение, где должно появиться кликабельное «Готово», место пустое. Но щелчок на этом пустом месте приводит к правильному выполнению кода!
Кто-нибудь видит, какую ошибку я допустил в строке 75?
Код: Выделить всё
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) {
}
}
}
Большое спасибо.
Подробнее здесь:
https://stackoverflow.com/questions/792 ... -appearing
1733143081
Anonymous
Мой setPositiveButton работает в моем приложении, но текст, который должен появиться при нажатии («Готово»), не появляется. Поэтому, когда я нажимаю на пробел в приложение, где должно появиться кликабельное «Готово», место пустое. Но щелчок на этом пустом месте приводит к правильному выполнению кода! Кто-нибудь видит, какую ошибку я допустил в строке 75? [code]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) { } } } [/code] Большое спасибо. Подробнее здесь: [url]https://stackoverflow.com/questions/79244118/setpositivebutton-working-but-text-string-not-appearing[/url]