// Workaround from Support.v4 v22.1.1 library: // // For APIs >= 11 && < 21, there was a framework bug that prevented a LayoutInflater's // Factory2 from being merged properly if set after a cloneInContext from a LayoutInflater // that already had a Factory2 registered. We work around that bug here. If we can't we // log an error. private static void ForceSetFactory2(LayoutInflater inflater, LayoutInflater.IFactory2 factory) { if (!_checkedField) { try { Class layoutInflaterClass = Class.FromType(typeof(LayoutInflater)); _layoutInflaterFactory2Field = layoutInflaterClass.GetDeclaredField("mFactory2"); _layoutInflaterFactory2Field.Accessible = true; } catch (NoSuchFieldException e) { Mvx.Error( "ForceSetFactory2 Could not find field 'mFactory2' on class {0}; inflation may have unexpected results.", Class.FromType(typeof(LayoutInflater)).Name); } _checkedField = true; } if (_layoutInflaterFactory2Field != null) { try { _layoutInflaterFactory2Field.Set(inflater, (Java.Lang.Object)factory); } catch (IllegalAccessException e) { Mvx.Error("ForceSetFactory2 could not set the Factory2 on LayoutInflater {0} ; inflation may have unexpected results.", inflater); } } }
public ViewPumpFactory2(LayoutInflater.IFactory2 factory2) : base() { _factory2 = factory2; _factory2ViewCreator = new Factory2ViewCreator(_factory2); }
public PrivateViewPumpFactory2(LayoutInflater.IFactory2 factory2, ViewPumpLayoutInflater layoutInflater) : base() { _factory2 = factory2; _layoutInflater = layoutInflater; _privateFactoryViewCreator = new PrivateFactory2ViewCreator(_layoutInflater, _factory2); }
private LayoutInflaterFactoryWrapper(LayoutInflater inflater, IViewFactory viewFactory) { Should.NotBeNull(inflater, nameof(inflater)); Should.NotBeNull(viewFactory, nameof(viewFactory)); _viewFactory = viewFactory; _factory = inflater.Factory; if (Factory2Field != null) _factory2 = inflater.Factory2; if (PrivateFactoryField != null) _privateFactory = JavaObjectExtensions.JavaCast<LayoutInflater.IFactory2>(PrivateFactoryField.Get(inflater)); }
private LayoutInflaterFactoryWrapper(LayoutInflater inflater, IViewFactory viewFactory) { Should.NotBeNull(inflater, nameof(inflater)); Should.NotBeNull(viewFactory, nameof(viewFactory)); _viewFactory = viewFactory; _factory = inflater.Factory; if (Factory2Field != null) { _factory2 = inflater.Factory2; } if (PrivateFactoryField != null) { _privateFactory = JavaObjectExtensions.JavaCast <LayoutInflater.IFactory2>(PrivateFactoryField.Get(inflater)); } }
public Factory2ViewCreator(LayoutInflater.IFactory2 factory2) : base() { _factory2 = factory2; }
public PrivateFactory2ViewCreator(ViewPumpLayoutInflater layoutInflater, LayoutInflater.IFactory2 factory2) : base(layoutInflater) { _factory2 = factory2; }