gpt4 book ai didi

java - 警报对话框监听器方法内为空,空指针

转载 作者:行者123 更新时间:2023-12-01 14:04:20 24 4
gpt4 key购买 nike

我在我创建的自定义监听器中放置了一个警报对话框,它就像一个 onClick 监听器。当另一个类中发生事件时调用监听器。

当我将警报对话框代码放入监听器回调方法中时,为什么会出现空指针?我怎样才能解决这个问题?更重要的是。为什么我会得到空指针?

监听器调用此 Android java 类中的回调方法 onResultReturned,当发生这种情况时,我希望出现警报对话框。

奇怪的是,这个警报对话框代码在我的回调方法之外工作得很好,就像我把它放在 onCreate 方法中时一样

我所在的Activity是StartActivity,方法onReturnResult在这个类中,另一个Activity调用的Synchronizer是监听器接口(interface)所在的位置。

堆栈跟踪;

09-27 16:08:42.300: E/AndroidRuntime(7195): FATAL EXCEPTION: main
09-27 16:08:42.300: E/AndroidRuntime(7195): java.lang.NullPointerException
09-27 16:08:42.300: E/AndroidRuntime(7195): at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:132)
09-27 16:08:42.300: E/AndroidRuntime(7195): at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:65)
09-27 16:08:42.300: E/AndroidRuntime(7195): at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142)
09-27 16:08:42.300: E/AndroidRuntime(7195): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:359)
09-27 16:08:42.300: E/AndroidRuntime(7195): at .StartActivity.onResultReturned(StartActivity.java:100)
09-27 16:08:42.300: E/AndroidRuntime(7195): at .Synchronizer$SendOutMsgAndPack$2.run(Synchronizer.java:159)
09-27 16:08:42.300: E/AndroidRuntime(7195): at android.os.Handler.handleCallback(Handler.java:605)
09-27 16:08:42.300: E/AndroidRuntime(7195): at android.os.Handler.dispatchMessage(Handler.java:92)
09-27 16:08:42.300: E/AndroidRuntime(7195): at android.os.Looper.loop(Looper.java:137)
09-27 16:08:42.300: E/AndroidRuntime(7195): at android.app.ActivityThread.main(ActivityThread.java:4424)
09-27 16:08:42.300: E/AndroidRuntime(7195): at java.lang.reflect.Method.invokeNative(Native Method)
09-27 16:08:42.300: E/AndroidRuntime(7195): at java.lang.reflect.Method.invoke(Method.java:511)
09-27 16:08:42.300: E/AndroidRuntime(7195): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)

我的 onResultReturned 回调方法的代码,通常在创建 Activity 后大约 4 到 5 秒调用

    @Override
public void onResultReturned(int result) {

// build allertdialog
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(StartActivity.this);


// set title
alertDialogBuilder.setTitle("update status");
//set allert message
alertDialogBuilder
.setMessage("update success")
.setCancelable(false)
.setPositiveButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, close
// current activity
//StartActivity.this.finish();
}
});

// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();

// show it
alertDialog.show();

}

最佳答案

检查您的上下文 - (StartActivity.this) in

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(StartActivity.this);

也许上下文为空;

关于java - 警报对话框监听器方法内为空,空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19044669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com