Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Xamarin.forms 在xaml中传递ad单元id以呈现admob ad_Xamarin.forms_Admob - Fatal编程技术网

Xamarin.forms 在xaml中传递ad单元id以呈现admob ad

Xamarin.forms 在xaml中传递ad单元id以呈现admob ad,xamarin.forms,admob,Xamarin.forms,Admob,我已将admob广告添加到我的应用程序中。现在我想从xaml页面发送广告单元id 我是这样实现的 创建自定义控件 使用Xamarin.Forms; 命名空间MeetupManager.Controls { 公共类AdControlView:视图 { } } 添加视图渲染器 使用Android.Widget; 使用Android.Gms.Ads; 使用Xamarin.Forms; 使用Xamarin.Forms.Platform.Android; [程序集:ExportRenderer(type

我已将admob广告添加到我的应用程序中。现在我想从xaml页面发送广告单元id

我是这样实现的

创建自定义控件

使用Xamarin.Forms;
命名空间MeetupManager.Controls
{
公共类AdControlView:视图
{
}
}
添加视图渲染器

使用Android.Widget;
使用Android.Gms.Ads;
使用Xamarin.Forms;
使用Xamarin.Forms.Platform.Android;
[程序集:ExportRenderer(typeof(MeetupManager.Controls.AdControlView)、typeof(MeetupManager.Droid.PlatformSpecific.adviewrender))]
命名空间MeetupManager.Droid.PlatformSpecific
{
公共类AdViewRenderer:ViewRenderer
{
string adUnitId=string.Empty;
//注意:您可能需要对此进行调整,请参阅下文。
AdSize AdSize=AdSize.SmartBanner;
AdView AdView;
AdView CreateNativeAddControl()
{
if(adView!=null)
反馈意见;
//这是我添加的Resources/values/strings.xml中的一个字符串,您也可以在这里修改它
adUnitId=Forms.Context.Resources.GetString(Resource.String.banner\u ad\u unit\u id);
adView=newadview(Forms.Context);
adView.AdSize=AdSize;
adView.AdUnitId=AdUnitId;
var adParams=新的LinearLayout.LayoutParams(LayoutParams.WrapContent,LayoutParams.WrapContent);
adView.LayoutParameters=adParams;
adView.LoadAd(新地址)
.Builder()
.Build());
反馈意见;
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(Control==null)
{
CreateNativeAddControl();
SetNativeControl(adView);
}
}
}
}
更新MainActivity

MobileAds.Initialize(ApplicationContext,“您的应用程序ID来自AdMob,其中有一个“~”);
更新XAML

首先添加自定义xmlns名称空间:

xmlns:controls=“clr命名空间:MeetupManager.controls;assembly=MeetupManager”
然后添加自定义控件


这是我遵循的教程

它工作得很好。现在我想要的是从xaml发送广告单元id。像这样的



我应该怎么做呢?

您应该在自定义控件中添加一个属性,如下所示:

使用Xamarin.Forms;
命名空间MeetupManager.Controls
{
公共类AdControlView:视图
{
公共静态只读BindableProperty AdUnitedProperty=
创建(propertyName:nameof(AdUnitId),
returnType:typeof(字符串),
declaringType:typeof(AdControlView),
默认值:“”);
公共字符串AdUnitId
{
get{return GetValue(AdUnitIdProperty).ToString();}
set{SetValue(AdUnitIdProperty,value);}
}
}
}
在您的视图中

使用Android.Widget;
使用Android.Gms.Ads;
使用Xamarin.Forms;
使用Xamarin.Forms.Platform.Android;
[程序集:ExportRenderer(typeof(MeetupManager.Controls.AdControlView)、typeof(MeetupManager.Droid.PlatformSpecific.adviewrender))]
命名空间MeetupManager.Droid.PlatformSpecific
{
公共类AdViewRenderer:ViewRenderer
{
//注意:您可能需要对此进行调整,请参阅下文。
AdSize AdSize=AdSize.SmartBanner;
AdView AdView;
//*********找零**********
AdView CreateNativeAddControl(字符串adUnitId)
{
if(adView!=null)
反馈意见;
adView=newadview(Forms.Context);
adView.AdSize=AdSize;
adView.AdUnitId=AdUnitId;
var adParams=新的LinearLayout.LayoutParams(LayoutParams.WrapContent,LayoutParams.WrapContent);
adView.LayoutParameters=adParams;
adView.LoadAd(新地址)
.Builder()
.Build());
反馈意见;
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(Control==null)
{
如果(!String.IsNullOrEmpty(((AdControlView)元素).AdUnitId))
{
字符串adUnitId=((AdControlView)元素).adUnitId;
CreateNativeAddControl(adUnitId);
SetNativeControl(adView);
}                    
}
}
}
}

您应该在自定义控件中添加一个属性,如下所示:

使用Xamarin.Forms;
命名空间MeetupManager.Controls
{
公共类AdControlView:视图
{
公共静态只读BindableProperty AdUnitedProperty=
创建(propertyName:nameof(AdUnitId),
returnType:typeof(字符串),
declaringType:typeof(AdControlView),
默认值:“”);
公共字符串AdUnitId
{
get{return GetValue(AdUnitIdProperty).ToString();}
set{SetValue(AdUnitIdProperty,value);}
}
}
}
在您的视图中

使用Android.Widget;
使用Android.Gms.Ads;
使用Xamarin.Forms;
使用Xamarin.Forms.Platform.Android;
[程序集:ExportRenderer(typeof(MeetupManager.Controls.AdControlView)、typeof(MeetupManager.Droid.PlatformSpecific.adviewrender))]
命名空间MeetupManager.Droid.PlatformSpecific
{
公共类AdViewRenderer:ViewRenderer
{
//注意:您可能需要对此进行调整,请参阅下文。
AdSize AdSize=AdSize.SmartBanner;
AdView adVi