繁体   English   中英

Xamarin.Forms平台特定的代码

[英]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容器中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM