我正在尝试弄清回调的工作方式以及最简单的方法,但我无法解决它
这是我的侦听器界面
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(...
Log.d("newToken", "Success :)");
已登录到logcat中,因此我们确定已触发本地onSuccessCB()
侦听器的onTestingCBListener
。您的代码的唯一问题是,您在Firebase回调结束之前显示Toast
太早,因此请在侦听器Toast
中传输onSucess()
消息;因此将下面的代码部分更改为