diff --git a/samples/ControlCatalog.Android/ControlCatalog.Android.csproj b/samples/ControlCatalog.Android/ControlCatalog.Android.csproj
index 1654d20c80..516acfe4b9 100644
--- a/samples/ControlCatalog.Android/ControlCatalog.Android.csproj
+++ b/samples/ControlCatalog.Android/ControlCatalog.Android.csproj
@@ -21,9 +21,23 @@
True
- True
+ False
True
+
+
+ False
+ False
+
+
+
+ True
+
+
+
+
+
+
diff --git a/samples/ControlCatalog.Android/MainActivity.cs b/samples/ControlCatalog.Android/MainActivity.cs
index 137f280e43..b02083c39d 100644
--- a/samples/ControlCatalog.Android/MainActivity.cs
+++ b/samples/ControlCatalog.Android/MainActivity.cs
@@ -5,7 +5,7 @@ using Avalonia.Android;
namespace ControlCatalog.Android
{
- [Activity(Label = "ControlCatalog.Android", Theme = "@style/MyTheme.NoActionBar", Icon = "@drawable/icon", LaunchMode = LaunchMode.SingleInstance)]
+ [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)
@@ -16,4 +16,3 @@ namespace ControlCatalog.Android
}
}
}
-
diff --git a/samples/ControlCatalog.Android/Resources/values/styles.xml b/samples/ControlCatalog.Android/Resources/values/styles.xml
index e017b6facf..2759d2904a 100644
--- a/samples/ControlCatalog.Android/Resources/values/styles.xml
+++ b/samples/ControlCatalog.Android/Resources/values/styles.xml
@@ -4,7 +4,7 @@
-
diff --git a/src/Android/Avalonia.Android/Avalonia.Android.csproj b/src/Android/Avalonia.Android/Avalonia.Android.csproj
index b774938a1d..6e0b615626 100644
--- a/src/Android/Avalonia.Android/Avalonia.Android.csproj
+++ b/src/Android/Avalonia.Android/Avalonia.Android.csproj
@@ -7,6 +7,15 @@
+
+
+
+
+
+
+ False
+ False
+
diff --git a/src/Android/Avalonia.Android/AvaloniaActivity.cs b/src/Android/Avalonia.Android/AvaloniaActivity.cs
index 3c9f373a66..fbadc257e2 100644
--- a/src/Android/Avalonia.Android/AvaloniaActivity.cs
+++ b/src/Android/Avalonia.Android/AvaloniaActivity.cs
@@ -1,35 +1,55 @@
using Android.App;
using Android.OS;
using Android.Views;
+using Android.Content.PM;
+using AndroidX.AppCompat.App;
+using Android.Content.Res;
+using AndroidX.Lifecycle;
namespace Avalonia.Android
{
- public abstract class AvaloniaActivity : Activity
+ public abstract class AvaloniaActivity : AppCompatActivity
{
internal AvaloniaView View;
- object _content;
-
+ internal AvaloniaViewModel _viewModel;
protected override void OnCreate(Bundle savedInstanceState)
{
View = new AvaloniaView(this);
- if (_content != null)
- View.Content = _content;
SetContentView(View);
+
+ _viewModel = new ViewModelProvider(this).Get(Java.Lang.Class.FromType(typeof(AvaloniaViewModel))) as AvaloniaViewModel;
+
+ if (_viewModel.Content != null)
+ {
+ View.Content = _viewModel.Content;
+ }
+
base.OnCreate(savedInstanceState);
}
-
public object Content
{
get
{
- return _content;
+ return _viewModel.Content;
}
set
{
- _content = value;
+ _viewModel.Content = value;
if (View != null)
View.Content = value;
}
}
+
+ public override void OnConfigurationChanged(Configuration newConfig)
+ {
+ base.OnConfigurationChanged(newConfig);
+ }
+
+ protected override void OnDestroy()
+ {
+ View.Content = null;
+
+ base.OnDestroy();
+ }
}
}
diff --git a/src/Android/Avalonia.Android/AvaloniaViewModel.cs b/src/Android/Avalonia.Android/AvaloniaViewModel.cs
new file mode 100644
index 0000000000..1b2c00987a
--- /dev/null
+++ b/src/Android/Avalonia.Android/AvaloniaViewModel.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Avalonia.Android
+{
+ internal class AvaloniaViewModel : AndroidX.Lifecycle.ViewModel
+ {
+ public object Content { get; set; }
+ }
+}