我的 android 应用程序中有一个微调器,我可以让它显示但秒。我点击它,应用程序崩溃并抛出:
无法添加窗口——令牌 android.view.ViewRootImpl$Wfb@ 无效:您的活动是否正在运行?
布局很简单。我有一个活动,它有一个列表和一个用于向列表添加内容的按钮。单击时,添加按钮会打开一个弹出窗口,其中显示微调器、一个文本框和一个按钮。一切正常,直到我单击微调器。
现在我在谷歌搜索了一个小时,发现了这些:
BadTokenException 无法在 PopUpWindow 中添加 Window Spinner
Android Spinner 错误:android.view.WindowManager$BadTokenException:无法添加窗口
和更多。它们似乎都指向上下文,但是我已经尝试了从使用“this”到 getApplicationContext 到我的 activity.context 的名称的所有方法,但都没有奏效。我尝试使用某人提供的答案两次,而不是仅将 contentView 设置为页面,这使事情变得更糟(应用程序立即因空指针异常而崩溃)。
这是弹出窗口的代码(单击“添加”按钮时执行):
public void add_itinerary_clicked(View view)
{
LayoutInflater i = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = i.inflate(R.layout.itinerary_add_item_page, null);
popup = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
popup.showAtLocation(popupView , Gravity.CENTER, 0, 0);
Spinner airlineChoice = (Spinner) popupView.findViewById(R.id.airlineSpinner);
Button addBtn= (Button) popupView.findViewById(R.id.finish_addItinerary);
String[] list = new String[1];
list = airlineMap.keySet().toArray(list);
ArrayAdapter<CharSequence> spinnerAdapter = new ArrayAdapter<CharSequence>(getApplicationContext(), android.R.layout.simple_spinner_item, list );
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
airlineChoice.setAdapter(spinnerAdapter);
addBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish_addItinerary_clicked();
popup.dismiss();
}
});
}
在这一点上,我完全不知所措。如果不是上下文(我已经尝试过其他人所说的话)那是什么?
这是完整的错误消息:
FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@40de1700 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:567)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:246)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.widget.PopupWindow.invokePopup(PopupWindow.java:993)
at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:899)
at android.widget.ListPopupWindow.show(ListPopupWindow.java:603)
at android.widget.Spinner$DropdownPopup.show(Spinner.java:981)
at android.widget.Spinner.performClick(Spinner.java:609)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)