|
|
@@ -1,62 +1,42 @@
|
|
|
+using System;
|
|
|
+using Android.App;
|
|
|
+using Android.Content;
|
|
|
+using Android.Content.Res;
|
|
|
using Android.OS;
|
|
|
+using Android.Runtime;
|
|
|
using AndroidX.AppCompat.App;
|
|
|
-using Android.Content.Res;
|
|
|
using AndroidX.Lifecycle;
|
|
|
-using Avalonia.Controls.ApplicationLifetimes;
|
|
|
-using Avalonia.Controls;
|
|
|
-using Android.Runtime;
|
|
|
-using Android.App;
|
|
|
-using Android.Content;
|
|
|
-using System;
|
|
|
|
|
|
namespace Avalonia.Android
|
|
|
{
|
|
|
public abstract class AvaloniaActivity : AppCompatActivity
|
|
|
{
|
|
|
- internal class SingleViewLifetime : ISingleViewApplicationLifetime
|
|
|
- {
|
|
|
- public AvaloniaView View { get; internal set; }
|
|
|
-
|
|
|
- public Control MainView
|
|
|
- {
|
|
|
- get => (Control)View.Content;
|
|
|
- set => View.Content = value;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
internal Action<int, Result, Intent> ActivityResult;
|
|
|
internal AvaloniaView View;
|
|
|
internal AvaloniaViewModel _viewModel;
|
|
|
|
|
|
- protected abstract AppBuilder CreateAppBuilder();
|
|
|
-
|
|
|
protected override void OnCreate(Bundle savedInstanceState)
|
|
|
{
|
|
|
- var builder = CreateAppBuilder();
|
|
|
+ _viewModel = new ViewModelProvider(this).Get(Java.Lang.Class.FromType(typeof(AvaloniaViewModel))) as AvaloniaViewModel;
|
|
|
|
|
|
-
|
|
|
- var lifetime = new SingleViewLifetime();
|
|
|
-
|
|
|
- builder.AfterSetup(x =>
|
|
|
+ View = new AvaloniaView(this);
|
|
|
+ if (_viewModel.Content != null)
|
|
|
{
|
|
|
- _viewModel = new ViewModelProvider(this).Get(Java.Lang.Class.FromType(typeof(AvaloniaViewModel))) as AvaloniaViewModel;
|
|
|
+ View.Content = _viewModel.Content;
|
|
|
+ }
|
|
|
|
|
|
- View = new AvaloniaView(this);
|
|
|
- if (_viewModel.Content != null)
|
|
|
- {
|
|
|
- View.Content = _viewModel.Content;
|
|
|
- }
|
|
|
+ View.Prepare();
|
|
|
|
|
|
- SetContentView(View);
|
|
|
+ if (Avalonia.Application.Current.ApplicationLifetime is SingleViewLifetime lifetime)
|
|
|
+ {
|
|
|
lifetime.View = View;
|
|
|
-
|
|
|
- View.Prepare();
|
|
|
- });
|
|
|
-
|
|
|
- builder.SetupWithLifetime(lifetime);
|
|
|
+ }
|
|
|
|
|
|
base.OnCreate(savedInstanceState);
|
|
|
+
|
|
|
+ SetContentView(View);
|
|
|
}
|
|
|
+
|
|
|
public object Content
|
|
|
{
|
|
|
get
|
|
|
@@ -90,16 +70,4 @@ namespace Avalonia.Android
|
|
|
ActivityResult?.Invoke(requestCode, resultCode, data);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- public abstract class AvaloniaActivity<TApp> : AvaloniaActivity where TApp : Application, new()
|
|
|
- {
|
|
|
- protected virtual AppBuilder CustomizeAppBuilder(AppBuilder builder) => builder.UseAndroid();
|
|
|
-
|
|
|
- protected override AppBuilder CreateAppBuilder()
|
|
|
- {
|
|
|
- var builder = AppBuilder.Configure<TApp>();
|
|
|
-
|
|
|
- return CustomizeAppBuilder(builder);
|
|
|
- }
|
|
|
- }
|
|
|
}
|