在android-AndroidX中进行回调的简单方法之一>

问题描述 投票:0回答:1

我正在尝试弄清回调的工作方式以及最简单的方法,但我无法解决它

这是我的侦听器界面

public interface OnTestingCBListener {
     void onSuccessCB(String SomeValue);}

这是我的MainActivity.java

OnCreate(){
    //FIRST
    deviceSetup();
}

public void deviceSetup() {
    String DeviceID = "asdfg";
    final String[] FirebaseID = {""};

    //SECOND
    GetFireBaseIDCall(new OnTestingCBListener() {
        @Override
        public void onSuccessCB(String ResultValue) {
            //FOURTH
            FirebaseID[0] = ResultValue;
        }
    }, "Value1", "Value2");

    //FIFTH
    Toast.makeText(MainActivity.this, "Result: "+DeviceID+"#"+FirebaseID, Toast.LENGTH_LONG).show();
}

OnTestingCBListener onTestingCBListener;
public void GetFireBaseIDCall(OnTestingCBListener onTestingCBListener, String x, String y){
    if(x.equals("Value1") && y.equals("Value2")) {
        FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(MainActivity.this, new OnSuccessListener<InstanceIdResult>() {
            @Override
            public void onSuccess(InstanceIdResult instanceIdResult) {
                final String newToken = instanceIdResult.getToken();
                Log.d("newToken", "Success :)");

                //THIRD
                onTestingCBListener.onSuccessCB(newToken);
            }
        });

        Log.d("newToken", "Failed :(");
    }
}

这不起作用,有什么解决方法吗?

我正在尝试弄清楚回调的工作方式以及最简单的方法,但是我无法解决它。这是我的侦听器接口公共接口OnTestingCBListener {void onSuccessCB(...

java android callback listener
1个回答
0
投票
请确保日志Log.d("newToken", "Success :)");已登录到logcat中,因此我们确定已触发本地onSuccessCB()侦听器的onTestingCBListener

您的代码的唯一问题是,您在Firebase回调结束之前显示Toast太早,因此请在侦听器Toast中传输onSucess()消息;因此将下面的代码部分更改为

© www.soinside.com 2019 - 2024. All rights reserved.