У меня есть кнопка в представлении переработчика, когда я нажимаю ее, я хочу изменить текст кнопки и сделать сетевой вызов с помощью volly.
Я получаю это исключение
Java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
Итак, я проверил этот ответ и создал класс, расширяющий класс Thread, и сделал в нем сетевой вызов, и вызвал его из адаптера
Но он все еще показывает ту же ошибку.
Я не понимаю, что мне нужно выполнить в основном потоке, а что в новом потоке.
Это вызов адаптера recycler-view
pdc_viewHolder.toggleButton_paymentStatus.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean toggleOn) {
if (toggleOn) {
// Toggle on = PAID
// Change the color of background
pdc_viewHolder.activity_dashboard_recyclerView_row_toggleButton_paymentStatus.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.shape_layout_toggle_button_dashboard_paid_state));
MyThread myThread = new MyThread(bankNameAdap, context);
myThread.start();
} else if (!toggleOn) {
// Toggle off = PENDING
//Change the toggle button background
pdc_viewHolder.activity_dashboard_recyclerView_row_toggleButton_paymentStatus.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.shape_layout_toggle_button_dashboard_pending_state));
MyThread myThread = new MyThread(bankNameAdap, context);
myThread.start();
}
}
});
и я вызываю метод Volley-POST в классе MyThread в методе run().
Как я могу это исправить?
Можете ли вы поделиться своим фрагментом кода?
ошибка, которую вы получаете, означает, что вы пытались что-то сделать не в том потоке. Но никто не знает что.
я выложил код
Я попробовал ваш ответ, но не сработал @PratikSatani
С какой проблемой вы столкнулись, пытаясь ответить на мой вопрос?
@PratikSatani У меня такое же исключение. bcz это то же самое, что и вызов метода в Activity непосредственно из адаптера. Он не имеет дело с потоками.
Сделайте одну вещь, используя runOnUIThread, чтобы вызвать ее activity.runOnUiThread(new Runnable() { public void run() { } });
Это работа для вас?
@PratikSatani нет, выдает ту же ошибку
да. Вы можете сделать с помощью интерфейса. Проверьте эту ссылку: Ссылка на сайт