xamarin/Xamarin.Forms

[Bug] Shell error message should be informative when trying to use something other than ContentPage as Tab

Aperta

#7346 aperta il 1 set 2019

 (7 commenti) (0 reazioni) (0 assegnatari)C# (1926 fork)batch import
a/shell :shell:e/2 :clock2:help wantedp/Androidp/iOS 🍎t/bug :bug:up-for-grabs

Metriche repository

Star
 (5644 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Description

I need to make the flow below: App - 3 tabs - the second tab is MasterDetailPage with (Dynamic) ListView on MasterPage where every listview item opens a different page on detail side.

Using Xamarin.Forms it was reached by TabbedPage + MasterDetailPage. Using Xamarin Shell I used TabBar element and the same MasterDetailPage, but it's represented by black area on iOS (but processes in the background still work, checked in debug) and crashes on Android with stacktrace:

"Specified cast is not valid." at Xamarin.Forms.Platform.Android.VisualElementExtensions.IsAttachedToRoot (Xamarin.Forms.VisualElement Element) [0x00047] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementExtensions.cs:44 \n at Xamarin.Forms.Platform.Android.AppCompat.MasterDetailContainer.AddChildView (Xamarin.Forms.VisualElement childView) [0x00066] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\MasterDetailContainer.cs:93 \n at Xamarin.Forms.Platform.Android.MasterDetailContainer.set_ChildView (Xamarin.Forms.VisualElement value) [0x0002e] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\MasterDetailContainer.cs:47 \n at Xamarin.Forms.Platform.Android.AppCompat.MasterDetailPageRenderer.g__Update|79_0 () [0x00022] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\MasterDetailPageRenderer.cs:410 \n at Xamarin.Forms.Platform.Android.AppCompat.MasterDetailPageRenderer.UpdateDetail () [0x0000d] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\MasterDetailPageRenderer.cs:399 \n at Xamarin.Forms.Platform.Android.AppCompat.MasterDetailPageRenderer.Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00135] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\MasterDetailPageRenderer.cs:158 \n at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element, Android.Support.V4.App.FragmentManager fragmentManager, Android.Content.Context context) [0x00031] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:393 \n at Xamarin.Forms.Platform.Android.AppCompat.FragmentContainer.OnCreateView (Android.Views.LayoutInflater inflater, Android.Views.ViewGroup container, Android.OS.Bundle savedInstanceState) [0x00008] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\FragmentContainer.cs:56 \n at Xamarin.Forms.Platform.Android.AppCompat.ShellFragmentContainer.OnCreateView (Android.Views.LayoutInflater inflater, Android.Views.ViewGroup container, Android.OS.Bundle savedInstanceState) [0x00011] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\ShellFragmentContainer.cs:38 \n at Android.Support.V4.App.Fragment.n_OnCreateView_Landroid_view_LayoutInflater_Landroid_view_ViewGroup_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_inflater, System.IntPtr native_container, System.IntPtr native_savedInstanceState) [0x00020] in <21e4bb539f4a49b58a498749b367d2a8>:0 \n at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.39(intptr,intptr,intptr,intptr,intptr)

Steps to Reproduce

  1. Create Xamarin Shell project
  2. Organize first level of navigation as TabBar
  3. Make one of the tabs as MasterDetailPage descendant
  4. Open this tab on the device

Expected Behavior

photo5431358580042345400

Actual Behavior

photo5431594786063756156

Basic Information

  • Version with issue: 4.2.0.709249
  • Last known good version: 3.6.0.344457
  • IDE: Visual Studio Community 2019 for Mac Version 8.2.5 (build 5)
  • Platform Target Frameworks:
    • iOS: 8.0
    • Android: 8.1

Guida contributor