0

我在崩溃报告中收到此错误android.view.WindowManager$BadTokenException。在某些设备上它只报告异常但不会使应用程序崩溃,其他设备会崩溃。

它与应用程序如何显示对话框有关。

其他答案表明context正在使用错误,例如全局错误,但在我的情况下,我没有这样做,我将我的活动上下文传递给不同对象的方法。

public class Utils {

包含一个方法

public static void noConnection(Context context){
    final CustomAlertDialog alert = new CustomAlertDialog(context, context.getString(R.string.ErrorPastTense), context.getString(R.string.ErrorInternet), context.getString(R.string.OkButton), null);

    View.OnClickListener listener = new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            int id = v.getId();
            switch(id){
                case R.id.alertConfirm:
                    alert.dismiss();
                    break;
                default:
                    break;
            }
        }
    };
    alert.setListener(listener);
    alert.show();
}

这在我的活动中被这样的方法调用Utils.noConnection(myActivity.this);

错误日志显示异常发生在alert.show()

为什么?以及如何避免

4

1 回答 1

1

您确定要显示来自 UI 线程的对话框吗?尝试类似:

Handler handler = new Handler();
handler.post(new Runnable() {
    @Override
    public void run() {
        alert.show()
    }
});
于 2013-06-11T14:36:32.947 回答