C# 如何在xamarin android中扩展应用程序类
我想扩展Android应用程序,并重写oncreate方法。 但由于某些原因,这是非常可怕的…只有当我删除[应用程序]我才能运行它,但根据这一点,我们必须添加[应用程序]C# 如何在xamarin android中扩展应用程序类,c#,xamarin,xamarin.android,android-manifest,android-application-class,C#,Xamarin,Xamarin.android,Android Manifest,Android Application Class,我想扩展Android应用程序,并重写oncreate方法。 但由于某些原因,这是非常可怕的…只有当我删除[应用程序]我才能运行它,但根据这一点,我们必须添加[应用程序] [Application] public class MainApp : Application { public MainApp(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer) { } public ove
[Application]
public class MainApp : Application
{
public MainApp(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public override void OnCreate()
{
base.OnCreate();
//app init ...
}
}
谁能告诉我在xamarin android中扩展应用程序类的正确方法是什么
更新
如果我不删除[应用程序],我会得到下面的错误
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:
错误:执行任务GenerateJavaStubs时出错:应用程序不能有
具有[Application]属性的类型和
[程序集:应用程序]属性。(myapp.Droid)
若我运行了一个应用程序,那个么它会编译,但会抛出以下运行时错误
[AndroidRuntime]正在关闭VM[AndroidRuntime]致命异常:
主[AndroidRuntime]进程:com.test.myapp,PID:6524
[AndroidRuntime]java.lang.RuntimeException:无法实例化
application com.test.myapp.MainApp:java.lang.ClassNotFoundException:
在路径:DexPathList[[zip]上未找到类“com.test.myapp.MainApp”
文件
“/data/app/com.test.myapp-1/base.apk”],nativeLibraryDirectories=[/data/app/com.test.myapp-1/lib/arm,
/data/app/com.test.myapp-1/base.apk!/lib/armeabi-v7a、/system/lib、,
/供应商/lib]][AndroidRuntime]位于
makeApplication(LoadedApk.java:802)
[AndroidRuntime]在
android.app.ActivityThread.handleBindApplication(ActivityThread.java:5377)
[AndroidRuntime]在
android.app.ActivityThread.-wrap2(ActivityThread.java)
[AndroidRuntime]在
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545)
[AndroidRuntime]在
android.os.Handler.dispatchMessage(Handler.java:102)[AndroidRuntime]
在android.os.Looper.loop(Looper.java:154)[AndroidRuntime]
main(ActivityThread.java:6119)
[AndroidRuntime]位于java.lang.reflect.Method.invoke(本机方法)
[AndroidRuntime]在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
[AndroidRuntime]在
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
[AndroidRuntime]由以下原因引起:java.lang.ClassNotFoundException:未
在路径:DexPathList[[zip文件]上查找类“com.test.myapp.MainApp”
“/data/app/com.test.myapp-1/base.apk”],nativeLibraryDirectories=[/data/app/com.test.myapp-1/lib/arm,
/data/app/com.test.myapp-1/base.apk!/lib/armeabi-v7a、/system/lib、,
/供应商/lib]][AndroidRuntime]位于
dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
[AndroidRuntime]在
loadClass(ClassLoader.java:380)[AndroidRuntime]
位于java.lang.ClassLoader.loadClass(ClassLoader.java:312)
[AndroidRuntime]在
android.app.Instrumentation.newApplication(Instrumentation.java:992)
[AndroidRuntime]在
makeApplication(LoadedApk.java:796)
[AndroidRuntime]。。。9更多
这是我的舱单
[Application]
应用于应用程序子类,以便在清单中注册此类
.ctor(System.IntPtr,Android.Runtime.jnihandleowner)
- 如果不添加此项,则当运行时尝试实例化Java包装器时,您将收到一个错误
OnCreate
方法
- 这避免了:
,因此应用程序子类不会实例化李>[art]JNI RegisterNativeMethods:尝试注册0个本机方法
[Application]
public class MainApplication : Application
{
public MainApplication(IntPtr javaReference, Android.Runtime.JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public override void OnCreate()
{
base.OnCreate();
}
}
在AssemblyInfo.cs中
点评
#if DEBUG
[Application(Debuggable=true)]
#else
[Application(Debuggable = false)]
#endif
并将其移动到应用程序的顶部
#if DEBUG
[Application(Debuggable=true)]
#else
[Application(Debuggable = false)]
#endif
public class MainApp : Application
{
public MainApp(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public override void OnCreate()
{
base.OnCreate();
//app init ...
}
}
基本上你已经在两个地方定义了它,这就是为什么这个问题发生的原因。
在AssemblyInfo.cs中进行注释并添加到扩展类中会奏效
供参考:
清单正常我收到编译错误。。。。上面说找不到文件。。我添加了android:name和application@Shiva
android:name
?,比如:[Application(LargeHeap=true,name=“com.sushihangover.Application”)
我输入了=“.Application”。。。上面写着。。找不到com.test.myapp.application。。。这里com.test.myapp是我的包您必须完全限定“名称”,xamarin确实支持点符号,如andriod Java或Gradle您使用的完整应用程序属性行是什么?