【发布时间】:2015-11-16 20:22:50
【问题描述】:
我添加了以下代码以在我的微调器视图上显示一个弹出框。该代码使用自定义 PopOver 扩展 PopupWindow :
@Override
public void onStart() {
super.onStart();
new Handler().postDelayed(new Runnable() {
public void run() {
if (mActivity == null || !isAdded() || mActivity.isFinishing() || mSpinner == null) {
return;
}
displayPopOver();
}
}, 500L); // have seen BadTokenException if we try to show the popup too early
}
private void displayPopOver() {
//PopOver is a custom class that extends PopupWindow
PopOver p = PopOver.createVerticalPopOver(mActivity, PopOver.Type.TIP);
p.show(mSpinner);
}
我无法重现崩溃,但通过崩溃报告我看到应用程序多次崩溃。我究竟做错了什么?可以在 onResume() 而不是 onStart() 中调用此代码有帮助吗?
android.view.WindowManager$BadTokenException: 无法添加窗口 -- 令牌 null 无效;您的活动正在运行吗? 1 在 android.view.ViewRootImpl.setView(ViewRootImpl.java:532) 2 在 android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259) 3 在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 4 在 android.widget.PopupWindow.invokePopup(PopupWindow.java:1019) 5 在 android.widget.PopupWindow.showAtLocation(PopupWindow.java:850) 6 在 android.widget.PopupWindow.showAtLocation(PopupWindow.java:814) 7 在 com.PopOver.show(PopOver.java:339) 8 在 com.MainFragment.displayPopOver(MainFragment.java:515) 9 在 com.MainFragment.access $1300(MainFragment.java:73) 10 在 com.MainFragment$5.run(MainFragment.java:497) 11 在 android.os.Handler.handleCallback(Handler.java:733) 12 在 android.os.Handler.dispatchMessage(Handler.java:95) 13 在 android.os.Looper.loop(Looper.java:136) 14 在 android.app.ActivityThread.main(ActivityThread.java:5001) 15 在 java.lang.reflect.Method.invokeNative(Native Method) 16 在 java.lang.reflect.Method.invoke(Method.java:515) 17 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 18 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 19 在 dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
意味着弹出窗口结束于 Spinner 或 Activity?
-
弹出窗口在微调器上
-
你在哪里创建微调器
-
在 onCreateView() 但我在显示 PopOver 之前检查了它是否为空
-
项目使用哪个 API 版本?
标签: java android android-fragments android-activity android-popupwindow