Код ниже основан на огромной викторине, которую я провел. (Я создал этот код, поэтому он короче и, следовательно, понятнее)
В начале список массивов содержит строки a, b, c и d, и когда пользователь нажимает кнопку (да / нет ) к определенному вопросу, вопрос должен переключиться, и некоторые строки удаляются из списка массивов, пока не останется только одна возможная строка.
Моя проблема в том, что при запуске приложения вопрос не меняется, хотя нажимаю Да / нет.
Вот код:
public class MainActivity extends AppCompatActivity {
static ArrayList<String> p = new ArrayList<String>();
static Button endbutton;
static Button questionbutton;
static Button yesbutton;
static Button nobutton;
static boolean yesbuttonisclicked=false;
static boolean nobuttonisclicked=false;
static boolean beginning=true;
static int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
endbutton = findViewById(R.id.endbutton);
questionbutton = findViewById(R.id.questionbutton);
yesbutton = findViewById(R.id.yesbutton);
nobutton = findViewById(R.id.nobutton);
if (beginning)
{
p.add("a");
p.add("b");
p.add("c");
p.add("d");
beginning = false;
}
yesbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
yesbuttonisclicked=true;
nobuttonisclicked=false;
endbutton.setText("yes");
}
});
nobutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
nobuttonisclicked=true;
yesbuttonisclicked=false;
endbutton.setText("no");
}
});
List array1 = Arrays.asList("1", "2", "3", "4");
Collections.shuffle(array1);
if (array1.get(i) == "1") {
questionbutton.setText("Question1");
if (yesbuttonisclicked) {
p.remove("a");
p.remove("b");
yesbuttonisclicked=false;
if (p.size() == 1) {
endbutton.setText(p.get(0));
}
} else if(nobuttonisclicked) {
p.remove("c");
p.remove("d");
nobuttonisclicked=false;
if (p.size() == 1) {
endbutton.setText(p.get(0));
}
}
} else if (array1.get(i).equals("2")) {
questionbutton.setText("Question2");
if (yesbuttonisclicked) {
p.remove("a");
p.remove("c");
yesbuttonisclicked=false;
if (p.size() == 1) {
endbutton.setText(p.get(0));
}
} else if(nobuttonisclicked){
p.remove("b");
p.remove("d");
nobuttonisclicked=false;
if (p.size() == 1) {
endbutton.setText(p.get(0));
}
}
} else if (array1.get(i).equals("3")) {
questionbutton.setText("Question3");
if (yesbuttonisclicked) {
p.remove("a");
p.remove("d");
yesbuttonisclicked=false;
if (p.size() == 1) {
endbutton.setText(p.get(0));
}
} else if(nobuttonisclicked){
p.remove("c");
p.remove("b");
nobuttonisclicked=false;
if (p.size() == 1) {
endbutton.setText(p.get(0));
}
}
} else if (array1.get(i).equals("4")) {
questionbutton.setText("Question4");
if (yesbuttonisclicked) {
p.remove("d");
p.remove("c");
yesbuttonisclicked=false;
if (p.size() == 1) {
endbutton.setText(p.get(0));
}
} else if(nobuttonisclicked){
p.remove("a");
p.remove("b");
nobuttonisclicked=false;
if (p.size() == 1) {
endbutton.setText(p.get(0));
}
}
}
i++;
}
}
Проблема не должна заключаться в нажатии кнопки, так как я создал дополнительную кнопку комментария, в которой я выводлю да, если была нажата кнопка Да и нет, если нет кнопки. Так что это не должно быть проблемой.
Я только что узнал, что программа почему-то не переключает логические значения yesbuttonisclicked и nobuttonisclicked. Возможно, это ошибка, но я не знаю, как ее исправить ...