|
|
@@ -11,27 +11,49 @@ using AndroidX.AppCompat.App;
|
|
|
|
|
|
namespace Avalonia.Android
|
|
|
{
|
|
|
- public abstract class AvaloniaMainActivity : AppCompatActivity, IActivityResultHandler, IActivityNavigationService
|
|
|
+ public class AvaloniaMainActivity : AppCompatActivity, IActivityResultHandler, IActivityNavigationService
|
|
|
{
|
|
|
- internal static object ViewContent;
|
|
|
-
|
|
|
public Action<int, Result, Intent> ActivityResult { get; set; }
|
|
|
public Action<int, string[], Permission[]> RequestPermissionsResult { get; set; }
|
|
|
+
|
|
|
+ public event EventHandler<AndroidBackRequestedEventArgs> BackRequested;
|
|
|
+
|
|
|
+ public override void OnBackPressed()
|
|
|
+ {
|
|
|
+ var eventArgs = new AndroidBackRequestedEventArgs();
|
|
|
+
|
|
|
+ BackRequested?.Invoke(this, eventArgs);
|
|
|
+
|
|
|
+ if (!eventArgs.Handled)
|
|
|
+ {
|
|
|
+ base.OnBackPressed();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
|
|
|
+ {
|
|
|
+ base.OnActivityResult(requestCode, resultCode, data);
|
|
|
+
|
|
|
+ ActivityResult?.Invoke(requestCode, resultCode, data);
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
|
|
|
+ {
|
|
|
+ base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
|
+
|
|
|
+ RequestPermissionsResult?.Invoke(requestCode, permissions, grantResults);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public abstract partial class AvaloniaMainActivity<TApp> : AvaloniaMainActivity where TApp : Application, new()
|
|
|
+ {
|
|
|
internal AvaloniaView View;
|
|
|
private GlobalLayoutListener _listener;
|
|
|
|
|
|
protected override void OnCreate(Bundle savedInstanceState)
|
|
|
{
|
|
|
- View = new AvaloniaView(this);
|
|
|
- if (ViewContent != null)
|
|
|
- {
|
|
|
- View.Content = ViewContent;
|
|
|
- }
|
|
|
+ InitializeApp();
|
|
|
|
|
|
- if (Avalonia.Application.Current.ApplicationLifetime is SingleViewLifetime lifetime)
|
|
|
- {
|
|
|
- lifetime.View = View;
|
|
|
- }
|
|
|
base.OnCreate(savedInstanceState);
|
|
|
|
|
|
SetContentView(View);
|
|
|
@@ -41,20 +63,6 @@ namespace Avalonia.Android
|
|
|
View.ViewTreeObserver?.AddOnGlobalLayoutListener(_listener);
|
|
|
}
|
|
|
|
|
|
- public object Content
|
|
|
- {
|
|
|
- get
|
|
|
- {
|
|
|
- return ViewContent;
|
|
|
- }
|
|
|
- set
|
|
|
- {
|
|
|
- ViewContent = value;
|
|
|
- if (View != null)
|
|
|
- View.Content = value;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
protected override void OnResume()
|
|
|
{
|
|
|
base.OnResume();
|
|
|
@@ -66,20 +74,6 @@ namespace Avalonia.Android
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public event EventHandler<AndroidBackRequestedEventArgs> BackRequested;
|
|
|
-
|
|
|
- public override void OnBackPressed()
|
|
|
- {
|
|
|
- var eventArgs = new AndroidBackRequestedEventArgs();
|
|
|
-
|
|
|
- BackRequested?.Invoke(this, eventArgs);
|
|
|
-
|
|
|
- if (!eventArgs.Handled)
|
|
|
- {
|
|
|
- base.OnBackPressed();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
protected override void OnDestroy()
|
|
|
{
|
|
|
View.Content = null;
|
|
|
@@ -89,20 +83,6 @@ namespace Avalonia.Android
|
|
|
base.OnDestroy();
|
|
|
}
|
|
|
|
|
|
- protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
|
|
|
- {
|
|
|
- base.OnActivityResult(requestCode, resultCode, data);
|
|
|
-
|
|
|
- ActivityResult?.Invoke(requestCode, resultCode, data);
|
|
|
- }
|
|
|
-
|
|
|
- public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
|
|
|
- {
|
|
|
- base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
|
-
|
|
|
- RequestPermissionsResult?.Invoke(requestCode, permissions, grantResults);
|
|
|
- }
|
|
|
-
|
|
|
class GlobalLayoutListener : Java.Lang.Object, ViewTreeObserver.IOnGlobalLayoutListener
|
|
|
{
|
|
|
private AvaloniaView _view;
|