我试图从Android活动打开对话框时收到此错误。谷歌搜索没有提供任何有用的解释。希望有人知道这个例外甚至意味着什么?
08-21 00:42:48.515: ERROR/AndroidRuntime(880): Uncaught handler: thread main exiting due to uncaught exception
08-21 00:42:48.595: ERROR/AndroidRuntime(880): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.view.ViewRoot.setView(ViewRoot.java:429)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:178)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.app.Dialog.show(Dialog.java:231)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.app.Activity.showDialog(Activity.java:2407)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at net.sosiouxme.WhenDidI.custom.AlarmEditActivity.openNewAlarmDialog(AlarmEditActivity.java:179)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at net.sosiouxme.WhenDidI.custom.AlarmEditActivity.onOptionsItemSelected(AlarmEditActivity.java:188)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at net.sosiouxme.WhenDidI.activity.TrackerEdit.onOptionsItemSelected(TrackerEdit.java:146)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.app.Activity.onMenuItemSelected(Activity.java:2085)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:820)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:139)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:813)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:519)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.view.View.onTouchEvent(View.java:3828)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.widget.TextView.onTouchEvent(TextView.java:6291)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.view.View.dispatchTouchEvent(View.java:3368)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1691)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.view.ViewRoot.handleMessage(ViewRoot.java:1525)
08-21 00:42:48.595: ERROR/AndroidRuntime(880): at android.os.Handler.dispatchMessage(Handler.java:99)`
在上面知道TrackerEdit继承自AlarmEditActivity可能会有帮助。 TrackerEdit有一个OptionsMenu,当我从该菜单中选择一个选项时,它会尝试通过openDialog调出一个对话框。堆栈跟踪似乎表明它在创建对话框之前崩溃。任何帮助,将不胜感激。
编辑 - 是的,好吧,有些代码可能是非常有益的,但我想这可能是很清楚,我的课都与net.sosiouxme开始并收到onOptionsItemSelected并呼吁Activity.showDialog()的一部分。但是,好的,这里是来自AlarmEditActivity的那些位:
/* ***************************** event handling *************************** */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.new_alarm:
openNewAlarmDialog();
break;
}
return super.onOptionsItemSelected(item);
}
/*
* Open dialog for user to create a new alarm
*/
public void openNewAlarmDialog() {
Alarm alarm = new Alarm(mTracker.getId());
alarm.setIvalWeeks(1);
mAlarmToEdit = alarm;
mViewOfAlarmToEdit = null;
showDialog(ALARM_DIALOG); // which is 0
}
该代码没有做任何非常有趣的事情。当选择菜单项时,它会尝试显示一个对话框。代码从来没有达到创建对话的地步,所以我甚至没有机会搞砸了。关于活动的唯一有趣的事情是,真正的活动是TrackerEdit,它扩展了AlarmEditActivity,因此正在执行的代码位于活动的父级中。
什么可能是有益的差异,如果您发布的代码 – Falmarri 2010-08-24 00:03:14
你做所有这些类的?听起来像一个特定领域的问题。对于一般性问题以及较小的特定问题,Stackoverflow非常适用,但对于严重针对您的系统的大型复杂问题,这不是一个好的地方。尝试将问题缩小到更具体的问题,您将从社区获得更好的回应。 – mtmurdock 2010-08-24 00:55:08
其中大部分都是android内置的活动 – Falmarri 2010-08-24 03:17:24