gpt4 book ai didi

android - 窗口管理器坏 token 异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:46 24 4
gpt4 key购买 nike

您好,我在“消息”对话框中遇到问题,在此处强制关闭我的代码。

在创建中:

  public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.email_result);

email_result = (Button) findViewById(R.id.email_result_btn);
email_result.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {


if (diffdays > 365) {

h.sendEmptyMessage(0);
}
}
}
}

我的处理程序:

private Handler h = new Handler() {
public void handleMessage(Message msg) {
showMessageDialog("Sorry, you cannot email entries which are earlier than one year ago.");
}
};

ShowMessageDialog 方法:

public void showMessageDialog(String nMessage) {

alertDialog = new Dialog(Email_Result.this);
AlertDialog.Builder customBuilder = new AlertDialog.Builder(
Email_Result.this);
customBuilder.setMessage(nMessage);
customBuilder.setPositiveButton(getString(R.string.ok),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
}
});
alertDialog = customBuilder.create();
alertDialog.setCancelable(true);
alertDialog.show();
}

错误日志

01-11 12:08:24.470: ERROR/AndroidRuntime(325): FATAL EXCEPTION: main
01-11 12:08:24.470: ERROR/AndroidRuntime(325): android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@44f1dfd8 is not valid; is your activity running?
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.view.ViewRoot.setView(ViewRoot.java:505)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.view.Window$LocalWindowManager.addView(Window.java:424)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.app.Dialog.show(Dialog.java:241)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at com.stress1.Email_Result.showMessageDialog(Email_Result.java:207)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at com.stress1.Email_Result$2.onClick(Email_Result.java:81)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.view.View.performClick(View.java:2408)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.view.View$PerformClick.run(View.java:8816)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.os.Handler.handleCallback(Handler.java:587)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.os.Handler.dispatchMessage(Handler.java:92)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.os.Looper.loop(Looper.java:123)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at java.lang.reflect.Method.invokeNative(Native Method)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at java.lang.reflect.Method.invoke(Method.java:521)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-11 12:08:24.470: ERROR/AndroidRuntime(325): at dalvik.system.NativeStart.main(Native Method)

最佳答案

当您在 Dialog 上调用 show() 方法时,似乎发生了异常。尝试使用以下可能会绕过您的问题的代码:

 try {
alertDialog.show();
} catch(Exception e){
// WindowManager$BadTokenException will be caught and the app would not display
// the 'Force Close' message
}

当 Activity 试图在它已经终止后显示 AlertDialog 时,就会出现这样的问题。因此,您可能需要仔细查看代码的工作原理。

此外,您的 showMessageDialog 方法可以简化如下:

public void showMessageDialog(String nMessage) {

AlertDialog.Builder customBuilder = new AlertDialog.Builder(Email_Result.this);
customBuilder.setMessage(nMessage);
customBuilder.setPositiveButton(getString(R.string.ok),new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
customBuilder.setCancelable(true);
customBuilder.show();
}

关于android - 窗口管理器坏 token 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8803915/

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