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

Xamarin的.表单平台特定代码

您只有一个活动。主要是你在你的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/