创建回调类



嘿,我正在使用调用PhoneAuthProvider的firebase回调我想做的是将这个回调封装在类中,并在多个类中创建这个类的实例,而不是多次编写这个回调(尝试写'clean代码")我可以这么做吗?我还想给函数添加参数我怎么能做到呢?

private final PhoneAuthProvider.OnVerificationStateChangedCallbacks
mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential credential) {
final String code = credential.getSmsCode();
if (code != null) {
verifycode(code);
}
}
@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
}
@Override
public void onCodeSent(@NonNull String s,
@NonNull PhoneAuthProvider.ForceResendingToken token) {
super.onCodeSent(s, token);
verificationID = s;
/*
Toast.makeText(RegistrationActivity.this, "Code sent", Toast.LENGTH_SHORT).show();
*/
/*  btnJoinNl.setEnabled(true);
codeFunc(s);*/
/*
bar.setVisibility(View.INVISIBLE);
*/
}

};

您可以简单地将构造移动到将从不同位置调用的方法中。然后,实例的实际构造只写一次(但调用多次)。

但是也可以把它写成一个独立的类。通常,您的IDE(例如IntelliJ, Eclipse)将这种转换作为其"重构"的一部分提供。行动。下面是结果:

public class MyCallback extends PhoneAuthProvider.OnVerificationStateChangedCallbacks {
private String verificationID;
public String getVerificationID() {
return verificationID;
}
@Override
public void onVerificationCompleted(@NonNull PhoneAuthCredential credential) {
final String code = credential.getSmsCode();
if (code != null) {
verifycode(code);
}
}
@Override
public void onVerificationFailed(@NonNull FirebaseException e) {
}
@Override
public void onCodeSent(@NonNull String s,
@NonNull PhoneAuthProvider.ForceResendingToken token) {
super.onCodeSent(s, token);
verificationID = s;
}
private void verifyCode(final String code) {
// verify ...
}
}

根据请求,下面是如何从方法创建实例:

private final PhoneAuthProvider.OnVerificationStateChangedCallbacks
mCallbacks = createCallback();
private PhoneAuthProvider.OnVerificationStateChangedCallbacks createCallBack() {
return new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
/* override methods here ... */
};
}

这两种变体可以组合在一起,因此您可以首先提取一个类,然后让一个方法创建该类的实例。

相关内容

  • 没有找到相关文章

最新更新