2015-01-21 80 views
0

我想添加一个系统提醒接到一个电话,就像TrueCaller应用程序一样。它适用于企业应用程序,因此用户了解该功能。IllegalArgumentException在隐藏系统警报

我可以添加系统警报,但我无法隐藏它。只要我隐藏它,它就会生成IllegalArgumentException。

下面是我在做什么添加系统警报 -

inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
     windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); 
     preRootView = inflater.inflate(R.layout.alert_pre_call_overlay, null); 
LayoutParams params = new LayoutParams(
       LayoutParams.MATCH_PARENT, 
       LayoutParams.WRAP_CONTENT, LayoutParams.TYPE_SYSTEM_ALERT, 
       LayoutParams.FLAG_NOT_TOUCH_MODAL | 
         LayoutParams.FLAG_NOT_FOCUSABLE| LayoutParams.FLAG_NOT_TOUCHABLE|LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
       PixelFormat.TRANSLUCENT); 

     params.gravity = Gravity.TOP; 


     windowManager.addView(preRootView, params); 

并隐藏的观点,我叫下面的代码 -

windowManager.removeView(preRootView); 

的卸下认为这是错误我越来越 -

W/System.err﹕ java.lang.IllegalArgumentException: View=android.widget.LinearLayout{64ea0ff8 V.E..... ......I. 0,0-768,473 #7f060007 app:id/preCallBox} not attached to window manager 
W/System.err﹕ at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:370) 
W/System.err﹕ at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:299) 
W/System.err﹕ at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:79) 
W/System.err﹕ at com.appcall.CallOverlay.onRefreshData(CallOverlay.java:213) 
W/System.err﹕ at com.appcall.Manager.CommandParser.sendRefreshData(CommandParser.java:458) 
W/System.err﹕ at com.appcall.Manager.CommandParser.sendExitCode(CommandParser.java:352) 
W/System.err﹕ at com.appcall.XMPPService.onCallStateChanged(XMPPService.java:403) 
W/System.err﹕ at com.appcall.PhoneStateMonitor.onCallStateChanged(PhoneStateMonitor.java:137) 
W/System.err﹕ at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:369) 
W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err﹕ at android.os.Looper.loop(Looper.java:136) 
W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5001) 
W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method) 
W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 

我已经搜索了这个例外,所以,但我只找到关于啤酒的问题rtDialogs。

我没有使用这项活动的setContentView,而是使用系统警报。它可能是原因吗?

所以我的问题是如何隐藏警报而不会崩溃我的应用程序?

回答

0

没关系,我在添加preRootView并试图删除preCallBox。我真的需要重新考虑我的命名约定。