【发布时间】:2026-02-02 07:45:01
【问题描述】:
所以,在对在片段内启动的 AlertDialog 进行一些确认后,我正在尝试打开一个新 Activity。
我的问题是上下文。我已经尝试过使用getActivity() 和getContext(),都无济于事。想法是通过此对话框确认用户操作(特别是删除帐户,因此将用户引导至特定活动很重要),并在确认后启动 IntroActivity。
这是我AlertDialog类的内容:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.layout_excluir_usuario_dialog, null);
dialog.setView(view)
.setTitle("Deseja mesmo excluir a sua conta?")
.setMessage("Excluir a sua conta resultará na eliminação completa dos seus dados do Salarium.")
.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
autenticacao = ConfiguracaoFirebase.getFirebaseAutenticacao();
FirebaseUser usuario = autenticacao.getCurrentUser();
usuario.delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(dialog.getContext(), "E-mail de redefinição de senha enviado!", Toast.LENGTH_LONG).show();
Intent intent = new Intent(getActivity().getApplicationContext(), IntroActivity.class);
startActivity(intent);
} else {
Toast.makeText(dialog.getContext(), "Ocorreu um erro na exclusão da sua conta", Toast.LENGTH_SHORT).show();
}
}
});
}
});
return dialog.create();
}
无论我选择哪种上下文方法组合,最后我都会遇到 NullPointerExceptions。
Process: com.filipewilliam.salarium, PID: 19838
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' on a null object reference
at com.filipewilliam.salarium.fragments.ExcluirUsuarioDialog$1$1.onComplete(ExcluirUsuarioDialog.java:55)
at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)```
【问题讨论】:
-
请edit您的问题提供完整的stack trace。
-
完成了,对不起!
-
尝试使用 onCreate 方法中的上下文。
标签: java android android-studio android-fragments android-alertdialog