Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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_Service_View_Android Windowmanager - Fatal编程技术网

如何在Android中从窗口管理器中删除多个视图?

如何在Android中从窗口管理器中删除多个视图?,android,service,view,android-windowmanager,Android,Service,View,Android Windowmanager,我正在开发来电显示应用程序,在窗口管理器视图中显示已拨/接收号码的信息。用户可以手动关闭视图。一切都很顺利,直到我测试了呼叫等待服务。即使单击“关闭”按钮并显示错误“视图未连接到窗口管理器”,待命等待视图仍保持在屏幕上。 我在做所有这些服务工作 我的问题是,是否有任何方法可以在一次单击中删除多个视图。 或者我可以跟踪附加到窗口管理器的视图 这是我的密码 linearLayout = new LinearLayout(this); linearLayout.addView(textHead

我正在开发来电显示应用程序,在窗口管理器视图中显示已拨/接收号码的信息。用户可以手动关闭视图。一切都很顺利,直到我测试了呼叫等待服务。即使单击“关闭”按钮并显示错误“视图未连接到窗口管理器”,待命等待视图仍保持在屏幕上。 我在做所有这些服务工作

我的问题是,是否有任何方法可以在一次单击中删除多个视图。 或者我可以跟踪附加到窗口管理器的视图

这是我的密码

linearLayout = new LinearLayout(this);
    linearLayout.addView(textHeaderName);
    linearLayout.addView(textheader);
    linearLayout.addView(chatHead);
    linearLayout.addView(textfooter);
    linearLayout.setOrientation(LinearLayout.VERTICAL);

    btnClose.setImageResource(R.drawable.button_close);
    btnClose.setLeft(0);
    chatHead.setBackgroundResource(R.drawable.img);

android.view.WindowManager.LayoutParams layoutparams = new android.view.WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSPARENT);
    android.view.WindowManager.LayoutParams layoutparams1 = new android.view.WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSPARENT);
    android.view.WindowManager.LayoutParams layoutparams2 = new android.view.WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSPARENT);
    final android.view.WindowManager.LayoutParams paramsChatHead = new android.view.WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSPARENT);
    android.view.WindowManager.LayoutParams layoutparams3 = new android.view.WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSPARENT);

    new android.widget.LinearLayout.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);

    layoutparams.gravity = 53;
    layoutparams.y = 0;
    layoutparams1.gravity = 49;
    layoutparams1.x = 0;
    layoutparams1.y = 0;
    layoutparams2.gravity = 49;
    layoutparams2.x = 0;
    layoutparams2.y = 25;
    paramsChatHead.gravity = 49;
    paramsChatHead.x = 0;
    paramsChatHead.y = 50;
    layoutparams3.gravity = 49;
    layoutparams3.x = 0;
    layoutparams3.y = imgheight + 50;

    try 
    {
        windowManager.addView(linearLayout, layoutparams1);
        windowManager.addView(btnClose, layoutparams);

    } catch (Exception e) 
    {}
关闭事件:

btnClose.setOnClickListener(new android.view.View.OnClickListener() 
    {
        public void onClick(View view)
        {
            try
            {
                if (linearLayout != null)
                {
                    windowManager.removeView(linearLayout);
                }
                if (btnClose != null)
                {
                    windowManager.removeView(btnClose);
                }
            } catch (Exception e) 
            {
                e.printStackTrace();
            }
        }     
    });
请帮助使用此条件:

 if (linearLayout.getWindowToken() != null) {
                                    windowManager.removeView(linearLayout);
                                }

假设
linearLayout
btnClose
均为
NOT NULL
时会发生什么情况,如果两者均为NOT NULL,则拨号后屏幕上会显示一个窗口,其中应显示主叫号码、姓名和其他信息。