Я занимаюсь разработкой своего первого приложения, и я пытаюсь разработать такую игру. У меня проблема с возвратом нужных данных из функции, содержащей onclick.
ниже приведен код, который вызывает функцию для возврата строки task_tb_done.
name_win_player_ch_screen.setText(player2_name);
name_lost_player_ch_screen.setText(player1_name);
String challenge2= challenge_selector(task_type);
task_tb_done.setText(player1_name+" "+challenge2);
challenge2="";
и вот код, который обрабатывает этот запрос. Вызов, который назначается в условном цикле while, возвращается, но не сразу, как должно быть, а возвращает значение при следующем вызове этой части функции. Я думаю, что есть некоторая проблема с методами OnClik, потому что в других вариантах вызова я не использую onClicks, и они сразу дают мне идеальные значения.
else if(task_type.equals("Truth or Dare")){
firstplayer_screen.setVisibility(View.INVISIBLE);
secondplayer_screen.setVisibility(View.INVISIBLE);
game_screen_table.setVisibility(View.INVISIBLE);
truth_or_dare_selection_screen.setVisibility(View.VISIBLE);
//A pop up to ask Either they want a truth or dare
//upon selection will give them task to do or to tell the truth.
truth_select_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
truesize = truth.length;
int i = (int) (Math.random() * ((truesize - 0) + 1));
if(i<=truesize) {
c=1;
toast.setText("Hey" + truth[i]);
toast.show();
challenge = truth[i];
truth_or_dare_selection_screen.setVisibility(View.INVISIBLE);
}
else{
challenge_selector(task_type);
toast.setText("Please Click again");
c=0;
toast.show();
}
}
});
dare_select_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
daresize = dare.length;
int i = (int) (Math.random() * ((daresize - 0) + 1));
if(i<=truesize) {
c=1;
toast.setText("Hey" + dare[i]);
toast.show();
challenge = dare[i];
truth_or_dare_selection_screen.setVisibility(View.INVISIBLE);
}
else{
challenge_selector(task_type);
toast.setText("Please Click again");
c=0;
toast.show();
}
}
});
while (c==1) {
c=0;
truth_or_dare_selection_screen.setVisibility(View.INVISIBLE);
return challenge;
}