iSeller Commerce
iSeller POS Retail
iSeller POS F&B
iSeller POS Express
Crosslight
WebUI
ClientUI
What's New
Download Trial
Web Solution
Mobile Solution
Enterprise Solution
Custom Development
Blog
Community
Latest Development Blogs
ForumPostTopic
Browse By Tag
Description
Error is being encountered when using SelectionInput with Android, which is not being experienced on iOS using the same ListViewModels.
Step to Reproduce
Use a selection with deep navigation properties.
[Editor(EditorType.Selection)][SelectedItemBinding(Path = "Machine.Class")][SelectionInput(SelectionMode.Single, DisplayMemberPath = "ClassName", ListSourceType = typeof(ClassListViewModel))] [Binding(Path = "Machine.Class.ClassName")] public static Class Class;
And here's the ListViewModelBase... we decided to use ListViewModelBase because USING DataListViewModelBase creates more issues with this scenario.
public class ClassListViewModel : ListViewModelBase<Class> { #region Field Variables private IQueryDefinition f_ViewQueryDefinition; #endregion #region Properties /// <summary> /// Gets the repository. /// </summary> /// <value>The repository.</value> public IClassRepository Repository { get { return Container.Current.CanResolve<IClassRepository>() ? Container.Current.Resolve<IClassRepository>() : new ClassRepository(null); } } /// <summary> /// Gets the view query. /// </summary> /// <value>The view query.</value> public IQueryDefinition ViewQuery { get { if (this.f_ViewQueryDefinition == null) this.f_ViewQueryDefinition = new ClassQueryDefinition(); return this.f_ViewQueryDefinition; } } /// <summary> /// Initializes the select parameter used when loading data. /// </summary> /// <returns>The select parameter.</returns> /// <param name="queryDescriptor">Query descriptor.</param> protected virtual SelectParameter InitializeSelectParameter(QueryDescriptor queryDescriptor) { var parameter = new SelectParameter(queryDescriptor); return parameter; } #endregion #region Methods public async override void Navigated(NavigatedParameter parameter) { this.ActivityPresenter.Show("Loading...", ActivityStyle.SmallIndicatorWithText, true); var p_SourceItems = await this.Repository.GetAllAsync(this.InitializeSelectParameter(this.ViewQuery.GetQueryDescriptor())); this.Items = p_SourceItems.Items.OrderBy(p => p.ClassName); this.ActivityPresenter.Hide(); base.Navigated(parameter); } #endregion }
Actual Result
--- End of managed exception stack trace ---java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method)Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) ... 2 moreCaused by: md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable: System.InvalidOperationException: Source object must implement INotifyPropertyChanged to support OneWay or TwoWay binding mode.at d.RefreshPropertyPath () <IL 0x002cd, 0x00d43>at d..ctor (Intersoft.Crosslight.BindingContext) <IL 0x00014, 0x00083>at Intersoft.Crosslight.BindingContext..ctor (object,Intersoft.Crosslight.BindableProperty,Intersoft.Crosslight.BindingDescription) <IL 0x0001f, 0x000d7>at Intersoft.Crosslight.ObjectExtensions.SetBinding (object,Intersoft.Crosslight.BindableProperty,Intersoft.Crosslight.BindingDescription) <IL 0x00003, 0x00063>at Intersoft.Crosslight.Android.Views.FormComponentBase.ConfigureBinding (Android.Views.View,Intersoft.Crosslight.BindableProperty,Intersoft.Crosslight.Forms.BindingAttribute,Intersoft.Crosslight.BindingDescription) <IL 0x0003c, 0x0013b>at Intersoft.Crosslight.Android.Views.FormComponentBase.PrepareBinding () <IL 0x00058, 0x001a6>at Intersoft.Crosslight.Android.FormActivity`1<Mercury.Mobile.Core.ViewModels.Collection.TicketMachineEditViewModel>.OnCreate (Android.OS.Bundle) <0x0032b>at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00011] in /Users/builder/data/lanes/1978/f98871a9/source/monodroid/src/Mono.Android/platforms/android-15/src/generated/Android.App.Activity.cs:2212at (wrapper dynamic-method) object.4fd6b648-21b8-4bb7-a768-68c4fdb3402c (intptr,intptr,intptr) <IL 0x00017, 0x00027> at md5de12dab3ecb38eed1becafd37f3acdc1.FormActivity_1.n_onCreate(Native Method) at md5de12dab3ecb38eed1becafd37f3acdc1.FormActivity_1.onCreate(FormActivity_1.java:53) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) ... 5 more
Expected Result
NO ERRORS
Hi Jimmy,Sorry for your inconvenience, could you copy paste your output (the one that have UNHANDLED EXCEPTION)From what i see there are a few possibility for cause of this error possibly in your form view model (caused by different value type between FormMetaData and Parameter inside Model on that view model).Also looks like your code work in our end.
or
Choose this if you're already a member of Intersoft Community Forum. You can link your OpenID account to your existing Intersoft Social ID.
Choose this if you don't have an Intersoft account yet. Your authenticated OpenID will be automatically linked to your new Intersoft account.
Enter your Wordpress Blogname