Xamarin.Forms平台特定代码

时间:2015-10-21 10:02:02

标签: c# xamarin.forms

美好的一天读者, 我正在尝试使用一个方法来解决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工作 希望有人能指出我正确的方向。

亲切的问候, 斯蒂芬

2 个答案:

答案 0 :(得分:2)

您只有一项活动。主要是你在Droid应用程序中找到它。如果您需要在活动代码中专门提供一些内容,并通过Xamarin表单页面启动事件。页面与活动并不真正相关,至少不符合您的想法。

Xamarin Forms是设计上的跨平台,因此如果您无法在IOS,WP和Droid上执行此操作,则无法在Forms中执行此操作。因为很明显,在其他2个平台表格中没有任何活动没有PCL的活动概念。

我对GSDEvent的进一步帮助不太熟悉。但要做你想要的事情,你必须在你的ContentPage上发布一个事件。将代码分配给Droid项目中的活动中的事件,并在您希望它运行时将其激活到PCL中。

或者,您可以在PCL中创建一个带有事件的类,在您的droid项目中实例化它并分配事件,然后将其放入您从PCL访问的IOC容器中。

答案 1 :(得分:0)