diff --git a/samples/ControlCatalog.Android/MainActivity.cs b/samples/ControlCatalog.Android/MainActivity.cs index b02083c39d..cb3565bcac 100644 --- a/samples/ControlCatalog.Android/MainActivity.cs +++ b/samples/ControlCatalog.Android/MainActivity.cs @@ -1,5 +1,4 @@ using Android.App; -using Android.OS; using Android.Content.PM; using Avalonia.Android; @@ -8,11 +7,5 @@ namespace ControlCatalog.Android [Activity(Label = "ControlCatalog.Android", Theme = "@style/MyTheme.NoActionBar", Icon = "@drawable/icon", LaunchMode = LaunchMode.SingleInstance, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize)] public class MainActivity : AvaloniaActivity { - protected override void OnCreate(Bundle? savedInstanceState) - { - base.OnCreate(savedInstanceState); - - Content = new MainView(); - } } } diff --git a/samples/ControlCatalog.Android/SplashActivity.cs b/samples/ControlCatalog.Android/SplashActivity.cs index 9729713833..6d5fd0714c 100644 --- a/samples/ControlCatalog.Android/SplashActivity.cs +++ b/samples/ControlCatalog.Android/SplashActivity.cs @@ -22,8 +22,7 @@ namespace ControlCatalog.Android if (Avalonia.Application.Current == null) { AppBuilder.Configure() - .UseAndroid() - .SetupWithoutStarting(); + .UseAndroid(); } StartActivity(new Intent(Application.Context, typeof(MainActivity))); diff --git a/src/Android/Avalonia.Android/AndroidPlatform.cs b/src/Android/Avalonia.Android/AndroidPlatform.cs index 308be1325c..ed1b43cf3e 100644 --- a/src/Android/Avalonia.Android/AndroidPlatform.cs +++ b/src/Android/Avalonia.Android/AndroidPlatform.cs @@ -4,6 +4,7 @@ using Avalonia.Android; using Avalonia.Android.Platform; using Avalonia.Android.Platform.Input; using Avalonia.Controls; +using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.Platform; using Avalonia.Input; using Avalonia.Input.Platform; @@ -14,6 +15,17 @@ using Avalonia.Skia; namespace Avalonia { + public class SingleViewLifetime : ISingleViewApplicationLifetime + { + public AvaloniaView View; + + public Control MainView + { + get => (Control)View.Content; + set => View.Content = value; + } + } + public static class AndroidApplicationExtensions { public static T UseAndroid(this T builder) where T : AppBuilderBase, new() @@ -21,7 +33,8 @@ namespace Avalonia var options = AvaloniaLocator.Current.GetService() ?? new AndroidPlatformOptions(); return builder .UseWindowingSubsystem(() => AndroidPlatform.Initialize(options), "Android") - .UseSkia(); + .UseSkia() + .SetupWithLifetime(new SingleViewLifetime()); } } } diff --git a/src/iOS/Avalonia.iOS/AvaloniaAppDelegate.cs b/src/iOS/Avalonia.iOS/AvaloniaAppDelegate.cs index 65a6743f9d..55afe72a25 100644 --- a/src/iOS/Avalonia.iOS/AvaloniaAppDelegate.cs +++ b/src/iOS/Avalonia.iOS/AvaloniaAppDelegate.cs @@ -1,5 +1,3 @@ -using Avalonia.Controls; -using Avalonia.Controls.ApplicationLifetimes; using Foundation; using UIKit; @@ -18,7 +16,9 @@ namespace Avalonia.iOS { var builder = AppBuilder.Configure(); CustomizeAppBuilder(builder); - var lifetime = new Lifetime(); + + var lifetime = new SingleViewLifetime(); + builder.AfterSetup(_ => { Window = new UIWindow(); @@ -35,15 +35,5 @@ namespace Avalonia.iOS Window.Hidden = false; return true; } - - class Lifetime : ISingleViewApplicationLifetime - { - public AvaloniaView View; - public Control MainView - { - get => View.Content; - set => View.Content = value; - } - } } } diff --git a/src/iOS/Avalonia.iOS/Platform.cs b/src/iOS/Avalonia.iOS/Platform.cs index 57a86cbfd8..f8815e9030 100644 --- a/src/iOS/Avalonia.iOS/Platform.cs +++ b/src/iOS/Avalonia.iOS/Platform.cs @@ -45,6 +45,7 @@ namespace Avalonia.iOS Timer ??= new DisplayLinkTimer(); var keyboard = new KeyboardDevice(); var softKeyboard = new SoftKeyboardHelper(); + AvaloniaLocator.CurrentMutable .Bind().ToConstant(GlFeature) .Bind().ToConstant(new CursorFactoryStub()) @@ -57,6 +58,7 @@ namespace Avalonia.iOS .Bind().ToConstant(Timer) .Bind().ToConstant(new PlatformThreadingInterface()) .Bind().ToConstant(keyboard); + keyboard.PropertyChanged += (_, changed) => { if (changed.PropertyName == nameof(KeyboardDevice.FocusedElement)) diff --git a/src/iOS/Avalonia.iOS/SingleViewLifetime.cs b/src/iOS/Avalonia.iOS/SingleViewLifetime.cs index 914f0ba548..16cbcaace4 100644 --- a/src/iOS/Avalonia.iOS/SingleViewLifetime.cs +++ b/src/iOS/Avalonia.iOS/SingleViewLifetime.cs @@ -1,7 +1,16 @@ +using Avalonia.Controls; +using Avalonia.Controls.ApplicationLifetimes; + namespace Avalonia.iOS { - public class SingleViewLifetime + public class SingleViewLifetime : ISingleViewApplicationLifetime { - + public AvaloniaView View; + + public Control MainView + { + get => View.Content; + set => View.Content = value; + } } -} \ No newline at end of file +}