- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我尝试在 NavigationBar 上为 Xamarin.Forms android build设置背景图像。那里的例子彼此几乎相同。我使用了这个自定义渲染器;
[assembly: ExportRenderer(typeof(NavigationPage), typeof(CustomNavigationRenderer))]
namespace xfprism.Droid
{
public class CustomNavigationRenderer : NavigationRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
{
base.OnElementChanged(e);
ExtendedActionBar();
}
void ExtendedActionBar()
{
var actionBar = ((Activity)Context).ActionBar;
actionBar.SetIcon(Resources.GetDrawable(Resource.Drawable.icon));
actionBar.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.coffee));
}
}
}
还有我的 app.xaml.cs;
public partial class App
{
protected override void OnInitialized()
{
InitializeComponent();
MainPage = new NavigationPage(new MainPage());
}
}
但是当我尝试调试项目时,我在行 base.OnElementChanged(e);
上得到 InvalidCastException。有什么我想念的吗?
仅供引用:我使用 Xamarin 4.1.0.462
Visual Studio 2015 更新 2
编辑:
这是调用栈;
>0xBE in Xamarin.Forms.Platform.Android.NavigationRenderer.SwitchContentAsync at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\Renderers\NavigationRenderer.cs:196,4
0x4 in Xamarin.Forms.Platform.Android.NavigationRenderer.OnPushAsync at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\Renderers\NavigationRenderer.cs:124,4
0x3 in Xamarin.Forms.Platform.Android.NavigationRenderer.PushViewAsync at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\Renderers\NavigationRenderer.cs:34,4
0x3 in Xamarin.Forms.Platform.Android.NavigationRenderer.<OnElementChanged>b__9_0 at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\Renderers\NavigationRenderer.cs:97,41
0x12 in Xamarin.Forms.EnumerableExtensions.ForEach<Xamarin.Forms.Page> at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Core\EnumerableExtensions.cs:38,5
0xEA in Xamarin.Forms.Platform.Android.NavigationRenderer.OnElementChanged at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\Renderers\NavigationRenderer.cs:97,4
0x3 in xfprism.Droid.CustomNavigationRenderer.OnElementChanged at C:\Users\andrej\Desktop\xfprism-kahve\xfprism\xfprism.Droid\Nav_Renderer.cs:24,13
0xFC in Xamarin.Forms.Platform.Android.VisualElementRenderer<Xamarin.Forms.NavigationPage>.SetElement at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:190,4
0x2E in Xamarin.Forms.Platform.Android.VisualElementRenderer<Xamarin.Forms.NavigationPage>.Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:126,4
0x21 in Xamarin.Forms.Platform.Android.Platform.CreateRenderer at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\Platform.cs:284,4
0x16 in Xamarin.Forms.Platform.Android.AppCompat.Platform.AddChild at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\Platform.cs:248,4
0x91 in Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPage at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\Platform.cs:237,4
0xA2 in Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:355,4
0xC in Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:429,4
0x17E in Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication at C:\BuildAgent3\work\aad494dc9bc9783\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:129,4
0x2D in xfprism.Droid.MainActivity.OnCreate at C:\Users\andrej\Desktop\xfprism-kahve\xfprism\xfprism.Droid\MainActivity.cs:23,13
最佳答案
如果您还没有解决方案;尝试从 Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer 而不是 Xamarin.Forms.Platform.Android.NavigationRenderer 扩展/继承渲染器
注意类名,它是“AppCompat.NavigationPageRenderer”。
关于c# - Xamarin.Forms-为什么 NavigationPage 的 CustomRenderer Android 抛出 InvalidCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37213772/
我创建了一个 Jtable。这个表由两列名称和时间戳组成。如果名称为“jane”,我想将行的颜色设为黄色。以下是该代码:- class CustomRenderer extends Defau
我想根据 JTable 中的值对某些行进行着色。但是我的 customrenderer 被无限次调用,并且整个表格而不是某些行都被着色。 public Component getTableCellRe
我在我的主页的 iOS native 代码中有一个自定义渲染器。当应用程序启动时它工作得很好,并使用我想要的 iOS 系统图标呈现 Navbar 项目。但是,如果我离开主页,当我导航回来时,Right
我的问题是我想更改 jTable 中一列中单元格的单独背景颜色。我想出的代码将颜色更改为一种,并且它适用于所有列。我做错了什么? 这是我的代码 public void fillReserveTable
因此,我在位于 SalesKicker.Droid 中的 CustomSwitchRenderer 类中遇到了这些错误。以下是错误: OnElementCHanged(ElementChangedEv
我有一个 Xamarin Forms 项目,我想在其中有一个按钮,必须按长 才能触发事件。除了长按事件,我还需要按下按钮的确切时间,因为那时我想在 UI 上启动一些动画。 我制作了一个自定义渲染器来解
我正在使用 Xamarin.Forms,并为 UWP 中的 Checkbox 创建了一个 CustomRenderer。当我通过单击“Alle”按钮将 ListView 中我的项目的所有复选框设置为
我正在努力寻找解决方案希望有人能给我指出正确的方向。 我需要导航到 Forms ContentPage,例如: Navigation.PushAsync(new ExamplePage()); 然后从
我刚刚将我的应用程序升级到 Android 7.1(API25) 并更新了 NuGet 包,如下所述: Xamarin.GooglePlayServive.Maps to v42.1021.1 Xam
我尝试在 NavigationBar 上为 Xamarin.Forms android build设置背景图像。那里的例子彼此几乎相同。我使用了这个自定义渲染器; [assembly: ExportR
我是一名优秀的程序员,十分优秀!