出错信息:
android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRoot$W@47e0add0 is not valid; is your activity running?at android.view.ViewRoot.setView(ViewRoot.java:505)at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)at android.view.Window$LocalWindowManager.addView(Window.java:424)at android.widget.PopupWindow.invokePopup(PopupWindow.java:828)at android.widget.PopupWindow.showAtLocation(PopupWindow.java:688)at android.widget.CursorHandle.showCursorHandle(CursorHandle.java:295)at android.widget.CursorHandle$CheckCursorHandle$1.run(CursorHandle.java:691)at android.os.Handler.handleCallback(Handler.java:587)at android.os.Handler.dispatchMessage(Handler.java:92)at android.os.Looper.loop(Looper.java:123)at android.app.ActivityThread.main(ActivityThread.java:4627)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:521)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)at dalvik.system.NativeStart.main(Native Method)
设备分布:
操作系统分布:
原因分析:
因为new对话框的时候,参数content 指定成了this,即指向当前子Activity的content。但子Activity是动态创建的,不能保证一直存在。其父Activity的content是稳定存在的,所以有下面的解决办法。
将子Activity中的
setContentView(R.layout.m_result);
改为: View contentView = LayoutInflater.from(getParent()).inflate(R.layout.m_result, null); setContentView(contentView);
其中:R.layout.m_result为布局文件
参考:http://blog.youkuaiyun.com/biangren/article/details/7514722