Я пытаюсь сделать небольшое приложение, которое имитирует кости. Я хочу, чтобы изображение стороны кости случайно менялось 6 раз после нажатия кнопки. Он должен случайным образом меняться 6 раз с задержкой 0,3 секунды после каждого случайного изменения. Проблема в том, что он меняется всегда только один раз не в шесть раз по желанию. Я предполагаю, что это будет просто какая-то тривиальная ошибка, но я не смог найти правильный ответ в любом месте в Интернете. Вот код, и я благодарю U все заранее:проблема с петлей и задержкой
import java.util.Random;
import android.app.Activity;
import android.os.*;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class OneDice extends Activity{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.onedicelayout);
final ImageView image = (ImageView) findViewById(R.id.OneDiceRollImage);
final int[] arrayOfDices = {
R.drawable.icon,
R.drawable.icon2,
R.drawable.icon3,
};
final Random rand = new Random();
View.OnClickListener rollOneDiceListener = new View.OnClickListener() {
@Override
public void onClick(View v){
int j = 0;
for(int i = 0; i<6; i++){
try {
j = rand.nextInt(3);
image.setImageResource(arrayOfDices[j]);
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Button oneDiceRollButton = (Button) findViewById(R.id.OneDiceRollButton);
oneDiceRollButton.setOnClickListener(rollOneDiceListener);
}
}
Я пробовал свой код, вне Android и случайного числа, и жду, пока работа прекрасна. Я могу только предположить, что проблема связана с методом setImageResource - может быть, у вас недостаточно времени для обновления изображения? Попробуйте добавить возврат, чтобы цикл ожидал завершения метода до его следующей итерации. – Mikaveli
К сожалению, я не могу использовать return in onClick(); – klodye