Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何解决错误”;“视图未附加到窗口管理器”;在android中?_Android_Android Asynctask_Progressdialog - Fatal编程技术网

“如何解决错误”;“视图未附加到窗口管理器”;在android中?

“如何解决错误”;“视图未附加到窗口管理器”;在android中?,android,android-asynctask,progressdialog,Android,Android Asynctask,Progressdialog,在我的应用程序中,我通过单击按钮调用异步任务,并使用onpreexecute方法启动“进度对话框”,使用onpostexecute方法结束该对话框 我在实现上述“视图未附加到窗口管理器”时遇到此错误 这是我的异步代码- /** * Async task class to get json by making HTTP call */ private class questionfeed_async extends AsyncTask<Void, Void, Void> {

在我的应用程序中,我通过单击按钮调用异步任务,并使用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();
       }
    }
/**
*异步任务类通过HTTP调用获取json
*/
私有类questionfeed\u async扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
pDialog=newprogressdialog(getActivity());
setMessage(“嗨”+用户名+“!加载您的问题提要”);
pDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…参数){
//TODO自动生成的方法存根
}
@凌驾
受保护的void onPostExecute(void结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
if(pDialog.isShowing()){
pDialog.disclose();
}
}
我在SOF post问题中给出了一些解决方案。也尝试了一下,但没有成功

Logcat-

java.lang.IllegalArgumentException:视图未附加到位于的窗口管理器 WindowManagerImpl.findViewLocked(WindowManagerImpl.java:670) 在 android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:351) 在 WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:162) 在android.app.Dialog.dismissDialog(Dialog.java:319)的 android.app.Dialog.disclose(Dialog.java:302)位于 cheerz.fragment.Profile\u fragment$user\u detail\u async.onPostExecute(Profile\u fragment.java:207) 在 cheerz.fragment.Profile\u fragment$user\u detail\u async.onPostExecute(Profile\u 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) Looper.loop(Looper.java:153)位于 main(ActivityThread.java:5034)位于 java.lang.reflect.Method.Invokenactive(本机方法)位于 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(本机方法)

使用此代码:

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

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

pDialog不是布局的一部分。请将其添加到布局中。使用指定的id查找它。然后通过其构造函数将其传递给异步任务。然后显示/取消。@Athena谢谢您告诉我如何使用构造函数。我对此不熟悉term@Athena谢谢它的工作!!谢谢我也尝试过这个,但它给出了同样的问题,但我尝试我在XML中添加progressBar的其他东西,并编写基本代码来启动和停止。