[Android] Fix previewer exceptions with TabbedPage (#6897)
authorPavel Yakovlev <v-payako@microsoft.com>
Mon, 22 Jul 2019 16:53:28 +0000 (19:53 +0300)
committerShane Neuville <shneuvil@microsoft.com>
Mon, 22 Jul 2019 16:53:28 +0000 (10:53 -0600)
* [Android] Fix previewer exceptions with TabbedPage

* - consolidated code

Xamarin.Forms.Platform.Android/AppCompat/TabbedPageRenderer.cs

index c2a3610..c39f631 100644 (file)
@@ -233,6 +233,8 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
                        base.OnElementChanged(e);
 
                        var activity = Context.GetActivity();
+                       var isDesigner = Context.IsDesignerContext();
+                       var themeContext = isDesigner ? Context : activity;
 
                        if (e.OldElement != null)
                                ((IPageController)e.OldElement).InternalChildren.CollectionChanged -= OnChildrenCollectionChanged;
@@ -269,7 +271,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
                                                var viewPagerParams = new AWidget.RelativeLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);
                                                viewPagerParams.AddRule(AWidget.LayoutRules.Above, _bottomNavigationView.Id);
 
-                                               FormsViewPager pager = _viewPager = CreateFormsViewPager(activity, e.NewElement);
+                                               FormsViewPager pager = _viewPager = CreateFormsViewPager(themeContext, e.NewElement);
 
                                                pager.Id = Platform.GenerateViewId();
                                                pager.AddOnPageChangeListener(this);
@@ -285,12 +287,13 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
                                        if (_tabLayout == null)
                                        {
                                                TabLayout tabs;
-                                               if (FormsAppCompatActivity.TabLayoutResource > 0)
+
+                                               if (FormsAppCompatActivity.TabLayoutResource > 0 && !isDesigner)
                                                        tabs = _tabLayout = activity.LayoutInflater.Inflate(FormsAppCompatActivity.TabLayoutResource, null).JavaCast<TabLayout>();
                                                else
-                                                       tabs = _tabLayout = new TabLayout(activity) { TabMode = TabLayout.ModeFixed, TabGravity = TabLayout.GravityFill };
+                                                       tabs = _tabLayout = new TabLayout(themeContext) { TabMode = TabLayout.ModeFixed, TabGravity = TabLayout.GravityFill };
 
-                                               FormsViewPager pager = _viewPager = CreateFormsViewPager(activity, e.NewElement);
+                                               FormsViewPager pager = _viewPager = CreateFormsViewPager(themeContext, e.NewElement);
 
                                                pager.Id = Platform.GenerateViewId();
                                                pager.AddOnPageChangeListener(this);
@@ -312,8 +315,11 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
                                UpdateBarBackgroundColor();
                                UpdateBarTextColor();
                                UpdateItemIconColor();
-                               UpdateSwipePaging();
-                               UpdateOffscreenPageLimit();
+                               if (!isDesigner)
+                               {
+                                       UpdateSwipePaging();
+                                       UpdateOffscreenPageLimit();
+                               }
                        }
                }