Chvalov
@Chvalov

Как передать int в другой класс в данном случае?

Есть класс Response.java который принимает массив байт от контролера.
В нем же я разбираю нужный мне ответ, и передаю данные в Активити для отображения.
public class Response {

    private Response(byte[] data) {

        // Работа со статусом
        if (data.length==96){
            // Определяем состояния двигателя
            for (int i = 0; i < 8; i++) { //для первых 8-ми
                if(data[i+8] != 0){
                    getEngineDanger(i);
                    continue;
                }
                if(isSet(data[3], i)){
                    getEngineStarted(i); //если стартовала (тру)
                }else {
                    getEngineStopped(i);
                }
            }
        }
    }

    // Передаем состояние по двигателям
    public int getEngineDanger(int i){return i;}   // Двигатель в аварии
    public int getEngineStarted(int i){return i;}   // Двигатель в работе
    public int getEngineStopped(int i){return i;}   //Двигатель выключен

    // Побитовое смещение, определяем включен ли двигатель (Возращает boolean значение)
    static boolean isSet(byte value, int bit){
        return (value&(1<<bit))!=0;
    }

В MainActivity.java я же должен получить i с getEngineDanger, getEngineStarted и getEngineStopped
@Override
    public void onRead(Response response) {
        setEngineButtonStarted(response.getEngineStarted());
    }

Но вот беда в том что я не знаю как мне принять нужные данные так как я должен с MainActivity передать данные в Response (к примеру в setEngineButtonStarted) он мне их же и вернет.
Как быть в данной ситуации, как мне только лишь получать данные в активити ?
  • Вопрос задан
  • 327 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Alexander_Fomin
Если я понял суть вопроса, то можно сделать так:

interface OnResponseCallback {
    void onResponse(int[] data);
}

class MainActivity implements OnResponseCallback {
    public MainActivity() {
        Response response = new Response(this);

    }

    @Override
    public void onResponse(int[] data) {
        //Обработка полученных данных
    }
}

class Response {
    OnResponseCallback mOnResponseComplete;
    public Response(OnResponseCallback onResponseComplete) {
        mOnResponseComplete = onResponseComplete;
        returnDataToMainActivity();
    }

    void returnDataToMainActivity() {
        mOnResponseComplete.onResponse(new int[] {1, 2, 3});
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы