J'ai reçu cette erreur en essayant d'ouvrir une boîte de dialogue à partir de mon activité Android. Une recherche sur Google n'a fourni aucune interprétation utile. En espérant que quelqu'un a une idée de ce que cette exception signifie?
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)`
Il peut être utile dans ce qui précède de savoir que TrackerEdit hérite de AlarmEditActivity. TrackerEdit a un OptionsMenu, et quand je choisis une option de ce menu, il essaie d'ouvrir une boîte de dialogue via openDialog. La trace de la pile semble indiquer qu'elle se bloque avant même de pouvoir créer la boîte de dialogue. Toute aide serait appréciée.
EDIT - oui, d'accord, un code peut être assez utile, même si je pensais que ce serait peut-être assez clair que mes cours étaient la partie qui a commencé avec net.sosiouxme et a reçu onOptionsItemSelected et appelé Activity.showDialog(). Mais OK, voici les bits de 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
}
Le code ne fait rien terriblement intéressant. Lorsque l'élément de menu est choisi, il essaie d'afficher une boîte de dialogue. Le code n'est jamais arrivé au point où un dialogue devait être créé, donc je n'ai même pas eu l'occasion de le faire. A propos de la seule chose qui est intéressant à distance sur l'activité est que l'activité réelle est TrackerEdit qui étend AlarmEditActivity, donc le code en cours d'exécution est dans le parent de l'activité.
ce qui pourrait être utile est si vous postez votre code – Falmarri
Avez-vous fait toutes ces classes? Cela ressemble à un problème spécifique à un domaine. Stackoverflow est idéal pour les questions générales et les petites questions spécifiques, mais ce n'est pas un bon endroit pour les gros problèmes complexes qui sont fortement spécifiques à votre système. essayez de réduire votre question à quelque chose de plus précis et vous obtiendrez de meilleures réponses de la part de la communauté. – mtmurdock
La plupart d'entre eux sont des activités intégrées Android – Falmarri