Как передать значение для функции Callable в Android-студии?

Я пытаюсь передать значение функции обратного вызова в моем коде, я передаю мой callback в другую функцию, и я хочу вернуть callback Штат,

вот моя функция, которую я отправляю>

wifiWrapper myWifiWrapper = new wifiWrapper(); //- INIZILIZING WIFI
                    myWifiWrapper.checkWifiState(this, wifiStateCallback);

вот моя конечная функция в классе wifiWrapper>

//checks if the wifi is On or Off
    public void checkWifiState (Context context, Callable callback) {


        WifiManager wifi = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);

        boolean isOn;


        if (wifi.isWifiEnabled()){

            Toast.makeText(context.getApplicationContext(), "Your Wi-Fi is enabled", //wifi is enabled
                    Toast.LENGTH_SHORT).show();
            isOn = true;

        } else {

            Toast.makeText(context.getApplicationContext(), "Your Wi-Fi is disabled", //wifi is disabled
                    Toast.LENGTH_SHORT).show();
            isOn = false;

        }



        try { //trys to call back to the callable function
            callback.call();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

и вот мой Callable, что я прохожу>

//callback for the ifiState
    Callable wifiStateCallback = new Callable() {
        @Override
        public Boolean call() throws Exception {


            return null;
        }
    };

ПРОБЛЕМА Я хочу передать isOnState к callable и не могу заставить его работать. я добавляю

callback.call(isOn);

но это не работает, говорит, что не может быть применено

1 ответ

Решение

Вы не можете добавить аргумент call() из ниоткуда и ожидайте, что это сработает. Callable-х call() без аргументов. Однако вы можете расширить Callable и передать все, что вы хотите, через конструктор:

class MyCallable extends Callable {

    boolean isOn;

    public MyCallable(boolean isOn) {
       mIsOn = isOn;
    }

    public Boolean call() throws Exception {
        if (mIsOn) {
           ...
        }
        ...
    }

}

тогда

Callable wifiStateCallback = new MyCallable(false);
Другие вопросы по тегам