xamarin/Xamarin.Forms

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

开放

#7,346 创建于 2019年9月1日

 (7 条评论) (0 个反应) (0 位负责人)C# (1,926 个派生)batch import
a/shell :shell:e/2 :clock2:help wantedp/Androidp/iOS 🍎t/bug :bug:up-for-grabs

仓库指标

星标
 (5,644 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

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

贡献者指南