[英]Xamarin.Forms platform specific code
祝读者好运,我正在尝试使用针对android的方法我如何将ContentPage转换为PCL中的android活动,甚至可能?
尝试过指令,但也不起作用
public static void AddEvent(GSDEvents ev, Activity ac)
{
// Id++;
Calendar cal = Calendar.GetInstance(Java.Util.TimeZone.Default, Locale.Default);
ContentValues eventValues = new ContentValues();
eventValues.Put(CalendarContract.Events.InterfaceConsts.CalendarId, Id);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Title, ev.Title);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Description, ev.Description);
eventValues.Put(CalendarContract.Events.InterfaceConsts.Dtstart, GetDateTimeMS(ev.Year, ev.Month, ev.Day, ev.Hour, ev.Minute));
eventValues.Put(CalendarContract.Events.InterfaceConsts.Dtend, GetDateTimeMS(ev.Year, ev.Month, ev.Day, ev.Hour, ev.Minute));
eventValues.Put(CalendarContract.Events.InterfaceConsts.AllDay, ev.AllDay ? "1" : "0");
eventValues.Put(CalendarContract.Events.InterfaceConsts.HasAlarm, ev.HasAlarm ? "1" : "0");
eventValues.Put(CalendarContract.Events.InterfaceConsts.EventTimezone, "GMT+1:00");
eventValues.Put(CalendarContract.Events.InterfaceConsts.EventEndTimezone, "GMT+1:00");
var uriCalendar = ac.ContentResolver.Insert(CalendarContract.Events.ContentUri, eventValues);
ContentValues remindervalues = new ContentValues();
remindervalues.Put(CalendarContract.Reminders.InterfaceConsts.Minutes, ev.ReminderMinute);
remindervalues.Put(CalendarContract.Reminders.InterfaceConsts.EventId, Id);
remindervalues.Put(CalendarContract.Reminders.InterfaceConsts.Method, (int)Android.Provider.RemindersMethod.Alert);
var uriCalendarReminder = ac.ContentResolver.Insert(CalendarContract.Reminders.ContentUri, remindervalues);
}
在我的内容页面
#if __ANDROID__
GSDEvents ev = new GSDEvents();
ev.Title = "Test Event";
ev.Description = "Dit is nog een test van de beschrijving";
GSDEvents.AddEvent(ev, __THEPROBLEM HOW CAN I GET THE ACTIVITY);
#endif
有人知道我如何在PCL中实现这一目标吗?希望有人能指出我正确的方向。
亲切的问候,斯特凡
您只有一项活动。 主要是您在Droid应用中找到它。 如果您需要在活动代码中专门添加一些内容,然后在Xamarin表单页面中通过事件将其启动。 网页与活动没有真正的关联,至少与您的思维方式没有关联。
Xamarin Forms在设计上是跨平台的,因此,如果您无法在IOS,WP和Droid上执行此操作,则无法在Forms中执行。 因为显然在其他两个平台上没有活动,所以Forms没有PCL的活动概念。
我对GSDEvent的帮助还不够熟悉。 但是要做您想做的事情,就必须在ContentPage上放置一个事件。 将代码分配给Droid项目中的“活动”中的事件,并在希望其起作用时在PCL内部触发它。
或者,您可以在PCL中创建一个带有事件的类,在您的droid项目中实例化它并分配该事件,然后将其放入可从PCL访问的IOC容器中。
我是和DependencyService Thnx家伙一起做的:) https://developer.xamarin.com/guides/cross-platform/xamarin-forms/dependency-service/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.