| 2021 | } |
| 2022 | |
| 2023 | static void clearViews(Object instance) { |
| 2024 | try { |
| 2025 | String cname = instance.getClass().getSimpleName(); |
| 2026 | for (Field field : instance.getClass().getDeclaredFields()) { |
| 2027 | String fname = cname + ":" + field.getName(); |
| 2028 | |
| 2029 | Class<?> ftype = field.getType(); |
| 2030 | Class<?> type = (ftype.isArray() ? ftype.getComponentType() : ftype); |
| 2031 | |
| 2032 | if (type == null) { |
| 2033 | Log.e(fname + "=null"); |
| 2034 | continue; |
| 2035 | } |
| 2036 | |
| 2037 | if (instance instanceof FragmentDialogPrint && |
| 2038 | WebView.class.isAssignableFrom(type)) { |
| 2039 | Log.i(fname + " clear skip"); |
| 2040 | continue; |
| 2041 | } |
| 2042 | |
| 2043 | if (View.class.isAssignableFrom(type) || |
| 2044 | Animator.class.isAssignableFrom(type) || |
| 2045 | Snackbar.class.isAssignableFrom(type) || |
| 2046 | SelectionTracker.class.isAssignableFrom(type) || |
| 2047 | SelectionTracker.SelectionPredicate.class.isAssignableFrom(type) || |
| 2048 | PagerAdapter.class.isAssignableFrom(type) || |
| 2049 | RecyclerView.Adapter.class.isAssignableFrom(type) || |
| 2050 | TwoStateOwner.class.isAssignableFrom(type)) |
| 2051 | try { |
| 2052 | StringBuilder sb = new StringBuilder(); |
| 2053 | sb.append("Clearing ").append(fname); |
| 2054 | |
| 2055 | field.setAccessible(true); |
| 2056 | |
| 2057 | if (!ftype.isArray()) { |
| 2058 | try { |
| 2059 | if (View.class.isAssignableFrom(type)) { |
| 2060 | View v = (View) field.get(instance); |
| 2061 | if (v != null) { |
| 2062 | sb.append(" tag"); |
| 2063 | v.setTag(null); |
| 2064 | } |
| 2065 | } |
| 2066 | |
| 2067 | if (TextView.class.isAssignableFrom(type)) { |
| 2068 | TextView tv = (TextView) field.get(instance); |
| 2069 | if (tv != null) { |
| 2070 | sb.append(" drawables"); |
| 2071 | tv.setCompoundDrawables(null, null, null, null); |
| 2072 | } |
| 2073 | } |
| 2074 | |
| 2075 | if (ImageView.class.isAssignableFrom(type)) { |
| 2076 | ImageView iv = (ImageView) field.get(instance); |
| 2077 | if (iv != null) { |
| 2078 | sb.append(" drawable"); |
| 2079 | iv.setImageDrawable(null); |
| 2080 | } |