Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# android的导航页面渲染。沙马林型_C#_Xamarin.forms_Custom Renderer - Fatal编程技术网

C# android的导航页面渲染。沙马林型

C# android的导航页面渲染。沙马林型,c#,xamarin.forms,custom-renderer,C#,Xamarin.forms,Custom Renderer,我正在尝试从自定义渲染器访问actionbar(我知道我可以使用toolbar.xml,但它不适合我的情况)这是我的代码 [assembly: ExportRenderer(typeof(NavigationPage), typeof(NoviNavigationPageRenderer))] namespace NoviMobileTest.Droid.Renderers { public class NoviNavigationPageRenderer : PageRenderer

我正在尝试从自定义渲染器访问actionbar(我知道我可以使用toolbar.xml,但它不适合我的情况)这是我的代码

[assembly: ExportRenderer(typeof(NavigationPage), typeof(NoviNavigationPageRenderer))]
namespace NoviMobileTest.Droid.Renderers
{
    public class NoviNavigationPageRenderer : PageRenderer
    {

        protected override void OnLayout(bool changed, int l, int t, int r, int b)
        {
                base.OnLayout(changed, l, t, r, b);
                var actionBar = ((Activity)Context).ActionBar;
                actionBar.SetBackgroundDrawable(Resources.GetDrawable(Resource.Drawable.YourImageInDrawable));
        }
    }
}
变量
actionbar
始终为空。我还尝试扩展NavigationRenderer,但遇到类强制转换异常。我见过很多人有同样的问题,但令人惊讶的是,没有任何例子可以看到。如何获取工具栏的实例

注: my Main活动扩展了
FormsAppCompatActivity

提前感谢

尝试在Android项目中安装,然后如下所示:

using Plugin.CurrentActivity;
...
private static Android.Support.V7.Widget.Toolbar GetToolbar() => (CrossCurrentActivity.Current?.Activity as MainActivity)?.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
有关详细信息,请参见:

尝试在Android项目中安装,然后如下所示:

using Plugin.CurrentActivity;
...
private static Android.Support.V7.Widget.Toolbar GetToolbar() => (CrossCurrentActivity.Current?.Activity as MainActivity)?.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);

有关这方面的更多信息,请参见:

在您声明actionBar是您使用的Xamarin.Forms.Forms.Context的“上下文”的那一行中?不,它是Android.Content.Context。我也尝试过表单,但仍然返回null,这是你的问题。该上下文不是应用程序中的实际活动,因此它没有操作栏。你需要像Wilson Vargas在回答中那样使用应用程序的当前活动。在你声明actionBar的行中是“上下文”,你使用的是Xamarin.Forms.Forms.Context?不,是Android.Content.Context。我也尝试过表单,但仍然返回null,这是你的问题。该上下文不是应用程序中的实际活动,因此它没有操作栏。你需要像Wilson Vargas在回答中那样使用应用程序的当前活动。感谢你的建议,但不幸的是它仍然返回null。你的建议是正确的,事实上它返回了正确的上下文。问题是,我正在呈现一个
NavigationPage
,而调用它时它没有操作栏。Include if(actionBar!=null){actionBar.SetBackgroundDrawable…}感谢您的建议,但不幸的是,它仍然返回null您的建议是正确的,事实上它返回了正确的上下文。问题是我正在呈现一个
NavigationPage
,而调用它时它没有操作栏。Include if(actionBar!=null){actionBar.SetBackgroundDrawable…}