我正在使用ACRA报告应用程序崩溃.我收到一条View not attached to window manager错误消息,并认为我已通过pDialog.dismiss();在if语句中包装来修复它:
if (pDialog!=null)
{
if (pDialog.isShowing())
{
pDialog.dismiss();
}
}
Run Code Online (Sandbox Code Playgroud)
它减少了View not attached to window manager我收到的崩溃数量,但我仍然得到一些,我不知道如何解决它.
错误信息:
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:425)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:327)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:83)
at android.app.Dialog.dismissDialog(Dialog.java:330)
at android.app.Dialog.dismiss(Dialog.java:312)
at com.package.class$LoadAllProducts.onPostExecute(class.java:624)
at com.package.class$LoadAllProducts.onPostExecute(class.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
代码段:
class LoadAllProducts extends AsyncTask<String, String, String> …Run Code Online (Sandbox Code Playgroud) 所以我调用了活动GameActivity.java,在这个活动中我称之为DialogAnswer.show()简单显示屏幕上的一些图片.
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:402)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:304)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:79)
at android.app.Dialog.dismissDialog(Dialog.java:325)
at android.app.Dialog.dismiss(Dialog.java:307)
at pl.evelanblog.prawdaczyfalsz.screen.DialogAnswer$1.onFinish(DialogAnswer.java:36)
at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:118)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5328)
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:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
这是我的DialogAnswer.java班级
public class DialogAnswer extends Activity {
private static ImageView resultImage;
private static Dialog dialog = null;
public static void show(Context context, boolean fCorrect) {
dialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.dialog);
resultImage = (ImageView) …Run Code Online (Sandbox Code Playgroud) 任何人都可以向我解释为什么会出现这种错误,或者更好的我如何处理它?我无法重现它.这是1000次中发生的错误之一.
背景:用户正在尝试登录,显示进度对话框,在异步任务中发送http请求,取消进度对话框.发生错误,应用FC.
LoginActivity.java
255: private void dismissProgress() {
256: if (mProgress != null) {
257: mProgress.dismiss();
258: mProgress = null;
259: }
260: }
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:391)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:236)
at android.view.Window$LocalWindowManager.removeView(Window.java:432)
at android.app.Dialog.dismissDialog(Dialog.java:278)
at android.app.Dialog.access$000(Dialog.java:71)
at android.app.Dialog$1.run(Dialog.java:111)
at android.app.Dialog.dismiss(Dialog.java:268)
at se.magpern.LoginActivity.dismissProgress(LoginActivity.java:257)
at se.magpern.LoginActivity.access$5(LoginActivity.java:255)
at se.magpern.LoginActivity$DoTheLogin.onPostExecute(LoginActivity.java:293)
at se.magpern.LoginActivity$DoTheLogin.onPostExecute(LoginActivity.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
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:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud) 我从我的应用程序中得到了错误报告,所有这些都是一样的.这真的很烦人,因为在我的测试设备(HTC Wildfire,Galaxy S I-II-III,Galaxy Mini,Galaxy Tab 10)中,这个错误从未发生过,对我或我的测试伙伴来说,看起来像用户做了一些与我们不同的事情.
因为这个我不能给你太多有关情况的信息,有一件事我看到,它是一个对话框的解雇,我实际上从来没有通过代码调用.
这是错误:
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:587)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:324)
at android.view.WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:151)
at android.app.Dialog.dismissDialog(Dialog.java:328)
at android.app.Dialog$1.run(Dialog.java:119)
at android.app.Dialog.dismiss(Dialog.java:313)
at android.app.Dialog.cancel(Dialog.java:1113)
at hu.kulcssoft.ingyenkonyv.reader.Reader$JavaScriptInterface$1.run(Reader.java:199)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
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:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
有人能帮助我吗?由于这个问题我每周得到30-40个错误报告,我真的无法弄清楚为什么会这样.
所有建议将不胜感激.谢谢,
android illegalargumentexception android-view android-dialog
警告The view is not attached to a window意味着什么?在尝试调试我的游戏时,我经常在Logcat中获取它.
确切的输出:
12-27 18:14:12.415: W/View(16827): The view is not attached to a window
Run Code Online (Sandbox Code Playgroud)
我已经搜索过这个警告,但却找不到任何内容.我得到的只是关于Window Manager的错误,这不是我在这里得到的.我想知道这个警告的原因,只是为了确认它是否与FPS下降有关?
我在发布的应用程序中收到此错误,只有客户端收到此错误。我已经多次尝试复制同样的错误,但没有成功。我也已经尝试在所有有 Dialog 但也没有解决的位置使用下面的代码。
if (dialog.isShowing ()) {
dialog.dismiss ();
}
Run Code Online (Sandbox Code Playgroud)
错误报告
java.lang.IllegalArgumentException: View=com.android.internal.policy.impl.PhoneWindow$DecorView{16faa139 V.E..... R.....I. 0,0-0,0} not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:412)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:338)
at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:122)
at android.app.Dialog.dismissDialog(Dialog.java:522)
at android.app.Dialog.dismiss(Dialog.java:504)
**at br.my.project.de.a(Unknown Source)
at br.my.project.de.onPostExecute(Unknown Source)**
at android.os.AsyncTask.finish(AsyncTask.java:636)
at android.os.AsyncTask.access$500(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Run Code Online (Sandbox Code Playgroud) 我越来越知名了java.lang.IllegalArgumentException: View not attached to window manager.目前已知的解决方案是使用空的try-catch块忽略错误.但它是否有一个更程序员友好的解决方案?例如
if (dialog.isAttached())
dialog.dismiss();
Run Code Online (Sandbox Code Playgroud)
当然,如果Android SDK有一个没有失败的功能会更好(因为如果无法避免它,API为什么会失败?):
dialog.tryDismiss();
Run Code Online (Sandbox Code Playgroud)
或者空的try-catch块在架构上是否合理?或者它只是一个糟糕或不完整的API的解决方法?
我正在开发一个Android应用程序,其中即时通讯使用异步任务和后执行方法,当我关闭进度对话框时,异常即将到来且应用程序正在强制关闭.
例外情况是:
04-24 09:41:54.661: E/AndroidRuntime(1727): java.lang.IllegalArgumentException: View not attached to window manager
04-24 09:41:54.661: E/AndroidRuntime(1727): at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355)
Run Code Online (Sandbox Code Playgroud)
代码:
data_insertion = new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
CommonUtility.show_PDialog(MainActivity.this);
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
//setting alaram for refresh api
CommonUtility.close_PDialog(); //*getting exception on this line*
Intent setalaram = new Intent(MainActivity.this, SetAlaram.class);
startService(setalaram);
Intent i = new Intent(MainActivity.this, PlayListActivity.class);
startActivity(i);
MainActivity.this.finish();
super.onPostExecute(result);
finish();
}
@Override
protected …Run Code Online (Sandbox Code Playgroud) android exception progressdialog android-asynctask forceclose
android ×8
java ×2
android-view ×1
api ×1
architecture ×1
debugging ×1
dismiss ×1
exception ×1
forceclose ×1
scala ×1