wcoder / Xamarin.Plugin.DeviceOrientation

Cross-platform plugin to work with screen orientation of mobile device.
MIT License
61 stars 19 forks source link

Getting a NullReferenceException #22

Open dush135 opened 4 years ago

dush135 commented 4 years ago

I am using this plugin in my xamarin forms app. But when I want to change the orientation to Landscape app getting crash and giving me a NullReferenceException in Android.

Android version 9(Pie) Xamarin.Forms version is 4.2.0.848062

yagha766 commented 4 years ago

I am getting the same error here NullReferenceException and I am using it in Xamarin Forms Is there a solution ???

CurrentOrientation is null

thisisthekap commented 4 years ago

The issues also arises regulary for several of our customers (According to AppCenter Crash Reporting). Therefore, unfortunately we are not able to provide a reproduction. Does anyone have some clue what could possibly be the cause of this issue?

wcoder commented 4 years ago

@thisisthekap Could you please provide some information:

thisisthekap commented 4 years ago

@wcoder Currently we are using Xamarin.Forms 4.6.0.726

Here a list of Android devices and OS versions where we detected the issue:

Device OS Version
F11 Pro 9
Galaxy A40 9
Galaxy A50 9
Galaxy A7 (2018) 9
Galaxy J2 Prime 6.0.1
Galaxy Note5 7.0
Galaxy Note8 9
Galaxy S10 9
J8 5.1
Le Max2 6.0.1
M6 7.0
Mate 20 9
MI 8 Lite 9
Mi A2 9
P20 lite 9
VIBE X3 Lite 6.0

Edit:

The issue was never detected on iOS devices.

ccsousa01 commented 4 years ago

I experienced the same issue using Xamarin Forms v4.7.0.968 but discovered this line CrossCurrentActivity.Current.Activity = this; within the protected override void OnCreate(Bundle savedInstanceState) MainActivity.cs file for the Android project. This requires the namespace using Plugin.CurrentActivity; . This solved the issue for me and the null reference error no longer appeared when I attempted to force a specific page, in my shared project, to only utilize portrait mode protected override void OnAppearing() { base.OnAppearing(); try { if (Device.Idiom == TargetIdiom.Phone && CrossDeviceOrientation.IsSupported) CrossDeviceOrientation.Current.LockOrientation(Plugin.DeviceOrientation.Abstractions.DeviceOrientations.Portrait); } catch (Exception) { //TODO: log exception } }

P.s. ensure you have the nuget package installed for each project. Xamarin.Forms sample