扩展Android应用程序类以使OnCreate与清单不匹配

问题描述 投票:1回答:1

使用Xamarin的Android应用程序,但我认为这适用于非Xamarin。我在做研究时读过这篇文章。

在Android应用程序中,您会注意到AndroidManifest.xml文件包含一个条目,用于配置应用程序的各种属性:图标,标签,主题等。根据您的应用程序的需要,这就足够了。实例化时,应用程序将根据清单中配置的值执行必要的初始化,然后将加载定义为要在启动时加载的视图的Activity。

在某些情况下,您可能希望扩展Application类,以便在应用程序启动时执行自定义初始化,或者维护全局应用程序状态(例如,在跨多个级别跟踪得分的游戏中)。上面显示的示例是有人决定子类化Application类并覆盖它的OnCreate方法的情况,尽管他们没有在override方法中包含任何自定义代码。看起来他们的目的是创建一个全局静态属性,以便始终可以访问当前加载的Activity。

以前,我不需要扩展应用程序类,所以我只是像我的文章所说的那样使用了我的清单处理。但是,我最近需要扩展应用程序类,以便我可以将OnCreate事件用于应用程序。

我添加了一个扩展Application的新类,它看起来像这样:

namespace MyApp.Droid
{
     public class MyApp : Application
     {
        public MyApp(IntPtr handle, global::Android.Runtime.JniHandleOwnership transfer)
        :base(handle, transfer)
        {

        }

        public override void OnCreate()
        {
            base.OnCreate();

            //Do OnCreate things here.
        }
    }
}

似乎只是添加这个类并不完整。第一个问题,我现在还必须修改我的清单吗?第二个问题,该类可以具有主题,图标等属性......这些属性已经在我的清单中定义。他们可以留在清单中还是我需要将它们作为属性移动到这个新类?

这是清单:

    <application android:allowBackup="true" android:icon="@drawable/mainapplogo" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">

谢谢!

android xamarin xamarin.android
1个回答
2
投票

第一个问题,我现在还必须修改我的清单吗?

在这个问题中,如果你的意思是因为你已经添加了新的应用程序类,那么就需要在现有的清单中进行任何更改,那么就没有这样的要求。

第二个问题,该类可以具有主题,图标等的属性......这些属性已经在我的清单中定义。他们可以留在清单中还是我需要将它们作为属性移动到这个新类?

Android Manifest的主题和其他一切将保留在那里,Android Application类和AndroidManifest.xml独立工作,因此添加扩展的应用程序类不需要对Manifest文件进行任何更改,反之亦然。

祝好运,

如有疑问,请随时恢复

UPDATE

请确保您的应用程序类在类名之上具有[Application]属性

#if DEBUG
[Application(Debuggable=true)]
#else
[Application(Debuggable = false)]
#endif

public class MyApp: Application
 {
© www.soinside.com 2019 - 2024. All rights reserved.