java - 在实现接口时尝试在空对象引用上调用接口方法
问题描述
public class forgetPassword extends AppCompatDialogFragment {
public ResetDialogListener listener;
EditText emailToReset;
final String tag="finalProject.bhaa";
String email =" ";
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.forget_password, null);
builder.setView(view)
.setTitle("Reset Password")
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setPositiveButton("Reset", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Log.i(tag,"---"+email);
email=emailToReset.getText().toString().trim();
Log.i(tag,"---"+email);
try {
listener.applyUpdate(email);
}catch (Exception e){
e.printStackTrace();
Log.i(tag,e.getMessage());
}
}
});
emailToReset= view.findViewById(R.id.emailToReset);
return builder.create();
}
public interface ResetDialogListener {
void applyUpdate(String Email);
}
}
这是applyUpdate的实现:
@Override
public void applyUpdate(String Email) {
Log.i(tag,"yyyyyyy");
firebaseAuth.sendPasswordResetEmail(Email).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(MainActivity.this,"Check your email .. ",Toast.LENGTH_SHORT);
}else {
String err=task.getException().getMessage();
Toast.makeText(MainActivity.this,"Error Occured: "+err,Toast.LENGTH_SHORT).show();
}
}
});
}
Tis lin 抛出异常:listener.applyUpdate(email);
尝试在空对象引用上调用接口方法“void com.bhaa.finalproject.forgetPassword$ResetDialogListener.applyUpdate(java.lang.String)”
我需要帮助解决这个问题
解决方案
确保listener
在AppCompatDialogFragment
附加时初始化。
@Override
public void onAttach(Context context) {
super.onAttach(context);
listner = (ResetDialogListener) context
}
推荐阅读
- javascript - Javascript函数中的返回值(数字总和除以3)
- excel - Excel、XPATH 函数和数字格式
- unity3d - 2D Lighting 定向阴影?
- php - 直接将 Magento 2.1.5 升级到 2.3
- node.js - 使用 Sequelize IsIn 进行验证不仅允许 Array 中的值
- javascript - Angular 8 + RxJS 和结合 flatMap 和 forkJoin 的问题
- nullpointerexception - 尝试调用虚拟方法'android.text.Editable com.rengwuxian.materialedittext.MaterialEditText.getText()'
- php - 自定义多身份验证保护日志记录和路由
- apache-nifi - Nifi 使用另一个名称移动文件
- excel - How to not clean a specific Textbox when other Userform controls are cleaned?