0

我正在尝试将一个值传递给我的代码中的回调函数,我将我的传递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;
        }
    };

问题是 我想将 传递isOnStatecallable,但似乎无法使其工作。 我正在添加

callback.call(isOn);

但它不起作用它说它不能应用

4

1 回答 1

2

您不能凭空添加参数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);
于 2016-04-26T07:32:52.690 回答