Xamarin的.表单平台特定代码
本文关键字:代码 平台 表单 Xamarin | 更新日期: 2023-09-27 18:18:35
读者好!我正试图使用一种方法,是为android ment我如何将ContentPage转换为android在PCL的活动是可能的吗?
尝试使用指令,但它也不工作
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);
}
in my contentpage
#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工作希望有人能给我指出正确的方向。
亲切的问候,Stefan
您只有一个活动。主要是你在你的Droid应用程序中找到它。如果你需要一些特别的活动代码,它在那里,并启动它从你的Xamarin表单页面与一个事件。页面并不真正与活动相关,至少不是以您的思维方式。
Xamarin Forms在设计上是跨平台的,因此如果你不能在IOS, WP和Droid上做,你也不能在Forms中做。因为显然在其他两个平台上没有活动,所以Forms在PCL中没有活动的概念。
我不太熟悉GSDEvent是什么,以进一步帮助。但要做你想做的你需要在ContentPage上放一个事件。将代码分配给你的Droid项目中的活动事件,并在你想让它起作用的时候在你的PCL中触发它。
或者你可以在你的PCL中创建一个带有事件的类,在你的droid项目中实例化它,并分配事件,然后把它放入你从PCL访问的IOC容器中。
我是用DependencyService做的。https://developer.xamarin.com/guides/cross-platform/xamarin-forms/dependency-service/