Xamarin.Forms 1.3.5 Hotfix 1 Released

TheRealJasonSmithTheRealJasonSmith XamuraiUSXamarin Team Xamurai
edited March 2015 in Xamarin.Forms

Hotfix 1 Released

Version: 1.3.5.6337

Bug Fixes

  • Bug 27581 - [Android] Can't scroll on webview after keyboard has shown
  • Entries/Buttons inside a ViewCell no longer cause ItemTapped to fail on Android

Original Notes

Monday monday monday :) The last bullet point is the only diff between this a -pre1.

Important Notes

Device.StartTimer callbacks should now return on the main thread for iOS. If you still have issues please let us know :)

Entry/Editor/SearchBar's inside a ViewCell now set the input mode to AdjustPan rather than AdjustResize when focused. This allows them to correctly focus.

Bug Fixes

  • Bug 20786 - Android - ViewCell - Entry and non default Keyboard type
  • Bug 21373 - [Android only] An Entry in a ViewCell loses focus immediately
  • Bug 22706 - Device.StartTimer has inconsistent behavior across platforms
  • Bug 24179 - ListView.ScrollTo does not work as expected on Windows Phone
  • Bug 25555 - WP DisplayAlert behaves differently when using back button
  • Bug 26569 - [Android] Unable to focus Entry inside ListView
  • Bug 25844 - [iOS] Scroll Editor autoscrolls too far when keyboard appears in iPad iOS 7.1 landscape view
  • Bug 25948 - [Android] ViewCell Entry fields in a ListView with StackLayout lose focus and do not bring up keyboard
  • Bug 26528 - NullReferenceException in Android.PickerRender.UpdatePicker()
  • Bug 26566 - Map with IsShowingUser set to true still polls for location after map is no longer displayed (Android)
  • Bug 26650 - [Android] Out of Memory error when repeatedly moving back and forth between main page and grid of images in StackLayou
  • Bug 26667 - [iOS] Keyboard causes view to scroll incorrectly
  • Bug 26767 - [Xamarin.Forms] Xamarin.Forms.Init() must be called prior to using it
  • Bug 26776 - [Xamarin.Forms] ListView TextCell.TextProperty only wraps on Android
  • Bug 26797 - Custom renderers "cut off" by 44px when NavigationPage's NavigationBar is set to hidden
  • Bug 26814 - Rotating an image in the delegate for MessagingCenter.Subscribe causes app to crash.
  • Bug 26817 - Binding to label with stringFormat doesn't visualize the expected string
  • Bug 26868 - GroupHeaders do not extend on Windows Phone
  • Bug 26889 - Global, Implicit Styles Are Not Applied to Modal Pages
  • Bug 27027 - SearchBar.SearchCommandParameter is not passed to the command

Other Fixes

  • Changing a DynamicResource triggers incorretly RemoveDynamicResource, when used with a binding
  • Several additional cases of the infamous Android IntPtr.Zero crash.
  • TextColor now resets to the proper value when a style is un-applied.
  • Minor memory perf enhancement
  • WP ListView group header cell now respects the height property correctly
  • Resolve issue where GestureRecognizers inside of ListView would fire against the wrong View.

Posts

  • AlessandroCaliaroAlessandroCaliaro ✭✭✭✭✭ ITMember ✭✭✭✭✭

    @TheRealJasonSmith well done

  • AlessandroCaliaroAlessandroCaliaro ✭✭✭✭✭ ITMember ✭✭✭✭✭

    @TheRealJasonSmith the button text alignment problem when will be fixed?

  • TheRealJasonSmithTheRealJasonSmith Xamurai USXamarin Team Xamurai
    edited March 2015

    As soon as we figure it out

    EDIT - Just re-read this and realized how blunt that sounds. Really thats just the truth, we don't know why this happens on certain android devices. If you have small reproduction cases of the issue, even if they are tied to a specific phone let me know, every bit helps.

  • DavidTavarezDavidTavarez ✭✭✭ DOMember ✭✭✭

    @TheRealJasonSmith now I can't open a ModalPage twice, the second time I try, it says: "Page must not already have a parent.".

  • TheRealJasonSmithTheRealJasonSmith Xamurai USXamarin Team Xamurai

    @DavidTavarez looking, thanks for the report, will push a quick fix if needed.

  • TheRealJasonSmithTheRealJasonSmith Xamurai USXamarin Team Xamurai

    @DavidTavarez which platform are you having this issue on?

  • DavidTavarezDavidTavarez ✭✭✭ DOMember ✭✭✭

    IOS 8

  • TheRealJasonSmithTheRealJasonSmith Xamurai USXamarin Team Xamurai

    @DavidTavarez I am not able to reproduce this issue on any platform doing the following:

    var page = CreatePage ();
    Navigation.PushModalAsync (page);
    
    // do some stuff
    
    Navigation.PopModalAsync ();
    
    // do some stuff
    
    Navigation.PushModalAsync (page); // same instance
    

    That all works fine. Now what wont and really never did (though it didn't blow up before) is:

    var page = CreatePage ();
    Navigation.PushModalAsync (page);
    
    // do some stuff
    
    Navigation.PushModalAsync (page); // same instance, pushed onto the stack again
    

    This breaks all sorts of things subtly, but essentially it multi-parents the page and provides it with multiple sets of renderers/etc.

  • CihanCilCihanCil ✭✭ TRMember ✭✭

    Something seems broken with ListView's ItemTapped events.

    I use custom viewcells. When I tap them nothing happens. So I downgraded for now to 1.3.4.

  • TheRealJasonSmithTheRealJasonSmith Xamurai USXamarin Team Xamurai

    @CihanCil can you provide me your ViewCell? If this is so this is a critical issue!

  • TheRealJasonSmithTheRealJasonSmith Xamurai USXamarin Team Xamurai

    @CihanCil I just double checked our internal tests for ViewCell + ListView + ItemTapped and I am not seeing any issues when I try it. I really need your ViewCell :(

  • CihanCilCihanCil ✭✭ TRMember ✭✭
    edited March 2015

    @TheRealJasonSmith

    I discovered it only happens when I use a button in my custom ViewCell. If there is a button somewhere then I can not tap the cell itself anymore.

    Sample code:

    public App()
    {
            MainPage = new NavigationPage(new ListPage());
    }
    
    public ListPage()
            {
                var collection = new System.Collections.ObjectModel.ObservableCollection<CustomSourceClass>() {
                    new CustomSourceClass { Detail = "Detail 1", Header = "Header 1" },
                    new CustomSourceClass { Detail = "Detail 2", Header = "Header 2" },
                    new CustomSourceClass { Detail = "Detail 3", Header = "Header 3" },
                };
    
                var listView = new ListView {
                    HasUnevenRows = true,
                    ItemsSource = collection,
                    ItemTemplate = new DataTemplate(typeof(CustomViewCell)),
                };
                listView.ItemTapped += HandleItemTapped;
    
                Content = listView;
            }
    
            void HandleItemTapped(object sender, Xamarin.Forms.ItemTappedEventArgs e)
            {   
                System.Diagnostics.Debug.WriteLine("Tapped");
            }
        }
    
    public class CustomViewCell : ViewCell 
        {
            protected override void OnBindingContextChanged()
            {
                base.OnBindingContextChanged();
    
                CustomSourceClass source = BindingContext as CustomSourceClass;
    
                Label lblHeader = new Label { Text = source.Header };
                Label lblCode = new Label { Text = source.Detail }; 
                Button btnX = new Button { Text = "X" };
    
                Grid grdMain = new Grid {
                    ColumnDefinitions = {
                        new ColumnDefinition{ Width = new GridLength(1, GridUnitType.Star) },
                        new ColumnDefinition{ Width = new GridLength(1, GridUnitType.Auto) },
                    },
                    RowDefinitions = {
                        new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) },
                        new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) },
                    },
                };
    
                grdMain.Children.Add(lblHeader, 0, 0);
                grdMain.Children.Add(lblCode, 1, 0);
                grdMain.Children.Add(btnX, 1, 1);
    
                View = grdMain;
            }
        }
    
  • FredyWengerFredyWenger ✭✭✭✭✭ CHInsider ✭✭✭✭✭

    Just updated to 1.3.5.
    Bug: https://bugzilla.xamarin.com/show_bug.cgi?id=25378 still exists.
    If an Entry/SearchBar at the end of a ScrollView becomes focus and the soft-keyboard is appears, the ScrollView is not scrolled and the Entry/SearchBar is overlapped from keyboard (not servable/usable)
    Android, tablet SM-T900

  • DavidTavarezDavidTavarez ✭✭✭ DOMember ✭✭✭

    @TheRealJasonSmith I'm not able to reproduce, apparently I'm doing something wrong. I have a ToolbarItem, then using a Renderer I moved it to the left. I'll try to fix it o reproduce it exactly as I have it.

  • AlessandroCaliaroAlessandroCaliaro ✭✭✭✭✭ ITMember ✭✭✭✭✭

    @TheRealJasonSmith bug 26817 about stringFormat is Alive

  • RobertDebaultRobertDebault ✭✭✭ USUniversity ✭✭✭

    After updating to this version from 1.3.1 I get the "System.InvalidOperationException" on UIApplication.Main(args,null,"AppDelegate") error. This only happens when I try to run the app on any of the iPAD simulators or a physical iPad itself. The iPhones, iTouch and Android devices all work flawlessly. If I revert back to the 1.3.1 version of Xamarin.Forms I get a blank screen on the iPad and the other devices still work flawlessly. Any ideas?

  • adamkempadamkemp mod USInsider, Developer Group Leader mod

    @RobertDebault, the exception is probably not coming from Main. Look at the call stack in the exception and the message contained in it. That may give you a clue about what is going on.

  • Shane000Shane000 ✭✭✭ USMember ✭✭✭

    Has anyone noticed that Task.Result() on android has bad behavior and often hangs the app. Just switching the method to async/await always fixes it. In this instance I was loading a bitmap on android but we've seen it in other cases. This is probably just a misunderstanding on my part of what result does, but I've only seen this behavior on android so it may be an android Task.Result() implementation issue.

  • adamkempadamkemp mod USInsider, Developer Group Leader mod

    I'm not sure how this is relevant to Xamarin.Forms, but using Task.Result is almost always the wrong thing to do. Accessing the Result property blocks until the task is finished, but often a task can't finish without getting the UI to do something. Therefore if you access the Result property from the UI thread then you are very likely to hang (because you're waiting for the task while blocking it from finishing). If you can't use await then use ContinueWith() instead.

  • Shane000Shane000 ✭✭✭ USMember ✭✭✭

    Ah true. I guess this was a android specific thing I was hitting using the Forms ImageSource. Good to know.

  • RobertDebaultRobertDebault ✭✭✭ USUniversity ✭✭✭
  • PeterMajor.5288PeterMajor.5288 ✭✭ GBMember, University ✭✭

    I'm also experiencing the ItemTapped bug. It doesn't fire on Android, but works fine on iOS...

  • PeterMajor.5288PeterMajor.5288 ✭✭ GBMember, University ✭✭

    I've just downgraded to 1.3.4 and the ItemTapped is working again on Android, so there's definitely something busted in 1.3.5

  • IbrahimSusicIbrahimSusic BAMember

    @TheRealJasonSmith I update my project and error:

    ackages\Xamarin.Forms.1.3.5.6335\build\portable-win+net45+wp80+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets(3,3): Error MSB4062: The "Xamarin.Forms.Build.Tasks.XamlGTask" task could not be loaded from the assembly \Xamarin.Forms.1.3.5.6335\build\portablewin+net45+wp80+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Build.Tasks.dll. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. (MSB4062)

  • RobertDebaultRobertDebault ✭✭✭ USUniversity ✭✭✭

    @adamkemp
    I was able to figure it out with some help from some of the other members. IPhone and iTouch allows MasterDetail pages to be embedded in another Controller but the iPad does not. By creating another function that returns just the MasterDetail Controller to the iOSProject I was able to get it working. The app.cs was returning NavigationPage to both the Android and IOS Projects. Now it return a NavigationPage to Android and MasterDetail page to the IOS devices....

  • TheRealJasonSmithTheRealJasonSmith Xamurai USXamarin Team Xamurai

    ViewCell button issue is found and fixed.

    The issue is when we changed the way the keyboard works we changed the focusability of descendants. This meant that buttons would now start accepting focus, which has resulted in us not getting the desired behavior. Unfortunately non of our ViewCells had a button in them :(

  • TheRealJasonSmithTheRealJasonSmith Xamurai USXamarin Team Xamurai

    Hotfix 1 has been pushed to resolve the ViewCell issue.

    The ViewCell issue was also affected by Entries, which is why it took the day to test and release. Hopefully this will be the only hotfix for 1.3.5

  • rmarinhormarinho Xamurai PTMember, Insider, Beta Xamurai

    @IbrahimSusic make sure you have updated all XF nuget packages in all platfroms and that there's no old XF references in the packages folder, then clean up your project reboot XS or VS and see if you still have the same problem.

  • John.3800John.3800 USMember

    Hello guys, where can I download this BugFix please ? Thanks

  • FredyWengerFredyWenger ✭✭✭✭✭ CHInsider ✭✭✭✭✭

    @John.3800:
    In VS, you can install the latest updates to your installed packages from menu to your whole solution or to a specific project (Android, iOS or Windows-Phone).
    Right-click on the solution or on a specific project and chose "NuGet xxxx".
    Note: you can see your already installed packages or available updates to it (where only the latest update is showed here).
    You also can switch here between "stable" or beta-versions...
    If you want / need to install a specific package (what - I think is the case), you have to install the package in the NuGet-console (start it in VS with Extras/Tools - NuGet-Package-Manager-Package-Manager-Console).
    You then have to install it with a command.
    All packages are store in NuGet:
    https://nuget.org/packages/Xamarin.Forms/1.4.1.6342-pre1

    Click on the link above, then scroll down and you will see all available packages to forms.
    Chose one and you will find the command to install it on top of the page.
    Then just copy-paste the command from the NuGet-site in your NuGet-console and press enter.
    Note: In the NuGet-Console, you have to select your project (where the package should be installed).
    You will have to install it for every project (iOS, Android, WP) you have in your solution..

    Hope, this helps...

Sign In or Register to comment.