Вы должны сделать var для ручки canceled
status
Например, по вашему коду.
public void printOut (){
final Handler handler = new Handler();
boolean isCanceled = false
for (final int[] x = {0}; (x[0] < Integer.parseInt(spinner.getSelectedItem.toString()) && !isCanceled); x[0]++) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
//printer for my device
int query = PrinterInterface.queryStatus();
if (query == 1){
isCanceled = true
// return true
//printing goes here..
}else{
// returns false
x[0] = Integer.parseInt(spinner.getSelectedItem.toString());
}
}
},2000 * x[0]);
}
И, если вы хотите обработать результат, вам нужно добавить обратный вызов.
Но я не понимаю, почему вы используете poseDelayed
, в for
вы запускаете все обработчики.
Лучше, если вы проверите query
, после этого выполните логику в Handler