2014-11-20 8 views
8

जब मैं एक WindowManager.removeView() करने की कोशिश,क्या यह जांचने का कोई तरीका है कि एंड्रॉइड विंडोमैनेजर में पहले से कोई दृश्य है या नहीं?

E/AndroidRuntime(2445): java.lang.IllegalArgumentException: View=android.widget.LinearLayout{41a03700 V.E..... ......I. 0,0-0,0} not attached to window manager 

E/AndroidRuntime(2445):    at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:370) 

E/AndroidRuntime(2445):    at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:299) 

E/AndroidRuntime(2445):    at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:79) 

मैं इस गंभीर त्रुटि मिलता है क्योंकि दृश्य विंडो प्रबंधक में नहीं था। क्या यह जांचने का कोई तरीका नहीं है कि क्या विंडोमेनगर पहले से ही दृश्य जोड़ चुका है या नहीं? मैं ऐसे किसी भी विधि को नहीं देख पा source

उत्तर

23

आप अगर दृश्य विंडो टोकन रिक्त है देखने के लिए जाँच कर सकते हैं:

try{ 
    WindowManager.removeView(view); 
}catch(IllegalArgumentException e){ 
    Log.e(debug_tag, "view not found"); 
} 
+0

मैं आपके सुझाव का प्रयास कर सकता हूं, लेकिन यह 'सही' प्रतीत नहीं होता है। एक अपवाद IMHO को अनदेखा नहीं किया जाना चाहिए - जब मेरे प्रोग्राम में कोई बग है, अपवाद को अनदेखा करना बुरा होगा। – likejiujitsu

+0

मैं सहमत हूं, आपको इसे अनदेखा नहीं करना चाहिए, लेकिन यह एक संभावित कामकाज है। मैंने एक और विचार जोड़ा है। –

+0

कोशिश कर रहे हैं और इसे अनदेखा कर रहे हैं, काम किया ... मुझे अपना अन्य विचार आज़माएं। क्या यह मजबूत है? खिड़की टोकन के बारे में कभी नहीं सुना। – likejiujitsu

1

:

if(view.getWindowToken() != null){ 
    WindowManager.removeView(view); 
} 

आप, साथ ही अपवाद पकड़ सकते थे यह खिड़की पर पहले से जोड़ा गया है या नहीं, यह भी एक बेहतर तरीका है। यदि (view.getParent()! = Null)) { windowsManager.removeView (देखें); }

संबंधित मुद्दे

 संबंधित मुद्दे