【问题标题】:How to solve the error "View not attached to window manager" in android?如何解决android中的“视图未附加到窗口管理器”错误?
【发布时间】:2015-03-01 03:31:06
【问题描述】:

在我的应用程序中,我在单击按钮时调用异步任务,并使用 onpreexecute 方法启动“进度对话框”并使用 onpostexecute 结束相同的任务。

我在执行上述操作时遇到此错误 - “视图未附加到窗口管理器。”

这是我的异步代码 -

/**
 * Async task class to get json by making HTTP call
 */
private class questionfeed_async extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();

        pDialog = new ProgressDialog(getActivity());
        pDialog.setMessage("Hi "+userName+ "! Loading your question feed ");
        pDialog.show();

    }


    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub


    }

    @Override
    protected void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
       if (pDialog.isShowing()) {
           pDialog.dismiss();
       }
    }

我在 SOF 帖子问题中给出了一些解决方案。也尝试一下,但没有成功。

Logcat -

java.lang.IllegalArgumentException:视图未附加到窗口管理器 android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:670) 在 android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:351) 在 android.view.WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:162) 在 android.app.Dialog.dismissDialog(Dialog.java:319) 在 android.app.Dialog.dismiss(Dialog.java:302) 在 Cheerz.fragment.Profile_Fragment$user_detail_async.onPostExecute(Profile_Fragment.java:207) 在 Cheerz.fragment.Profile_Fragment$user_detail_async.onPostExecute(Profile_Fragment.java:149) 在 android.os.AsyncTask.finish(AsyncTask.java:631) 在 android.os.AsyncTask.access$600(AsyncTask.java:177) 在 android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:153) 在 android.app.ActivityThread.main(ActivityThread.java:5034) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 在 dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • pDialog 不是您布局的一部分。将其添加到您的布局中。使用分配的 id 找到它。然后通过其构造函数将其传递给您的异步任务。然后显示/关闭。
  • @Athena 谢谢你能帮忙告诉我如何使用构造函数。我是这个词的新手
  • @Athena 谢谢它有效!!

标签: android android-asynctask progressdialog


【解决方案1】:

使用此代码:

if (pDialog != null) {
       pDialog.dismiss();
   }

安装于:

if (pDialog.isShowing()) {
       pDialog.dismiss();
   }

【讨论】:

  • 谢谢我也试过这个,但它给出了同样的问题,但我尝试了其他可行的方法
  • 我在我的 XML 中添加了 progressBar 并编写了基本代码来启动和停止。
猜你喜欢
  • 2011-03-23
  • 1970-01-01
  • 2012-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 2011-01-14
相关资源
最近更新 更多