C# 从其他活动的构造函数启动活动?

C# 从其他活动的构造函数启动活动?,c#,android,android-activity,xamarin,C#,Android,Android Activity,Xamarin,我对xamarin/android开发相当陌生,但这正是我在概念上尝试的: 具有检查用户是否已登录的主活动 如果用户已登录,请启动MainAppActivity 如果用户未登录,请启动OnboardingActivity 我认为这些应该在不同的活动中出现的原因是出于一般设计原因(关注点分离等),但也因为这两个活动有不同的主题。(入职流程没有标题栏) 在代码中,这应该是我所需要的: [Activity(Label = "MyApp", MainLauncher = true, Icon = "

我对xamarin/android开发相当陌生,但这正是我在概念上尝试的:

  • 具有检查用户是否已登录的主活动
  • 如果用户已登录,请启动MainAppActivity
  • 如果用户未登录,请启动OnboardingActivity
我认为这些应该在不同的活动中出现的原因是出于一般设计原因(关注点分离等),但也因为这两个活动有不同的主题。(入职流程没有标题栏)

在代码中,这应该是我所需要的:

[Activity(Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon", Theme = "@android:style/Theme.Black.NoTitleBar")]
public class MainActivity : Activity
{
    private readonly TransactionService _transactionService;

    public MainActivity()
    {
        var isLoggedIn = true; // This will be loaded from somewhere

        if(isLoggedIn)
        {
            var intent = new Intent(this, typeof(MainAppActivity));
            StartActivity(intent);
        } 
        else
        {
            var intent = new Intent(this, typeof(OnboardingActivity));
            StartActivity(intent);
        }
    }
}
然而,这段代码只是抛出一个未指定的异常

如果我在
受保护覆盖void OnCreate(Bundle Bundle)
过程中尝试相同的操作,我也会得到一个异常

然而,当我将类似的东西绑定到按钮事件并手动单击它时,它就会工作。(这不是我的意图,但为了测试我的活动没有任何问题)

所以,问题是,我如何做这样的事情

编辑:这里是stacktrace,如果我在构造函数中尝试它:

0x29 in System.Diagnostics.Debugger.Mono_UnhandledException_internal    C#
0x1 in System.Diagnostics.Debugger.Mono_UnhandledException at /Users/builder/data/lanes/1978/f98871a9/source/mono/mcs/class/corlib/System.Diagnostics/Debugger.cs:122,4 C#
0x6 in Android.Runtime.UncaughtExceptionHandler.UncaughtException at /Users/builder/data/lanes/1978/f98871a9/source/monodroid/src/Mono.Android/src/Runtime/UncaughtExceptionHandler.cs:35,4 C#
0x1C in Java.Lang.Thread.IUncaughtExceptionHandlerInvoker.n_UncaughtException_Ljava_lang_Thread_Ljava_lang_Throwable_ at /Users/builder/data/lanes/1978/f98871a9/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Java.Lang.Thread.cs:221,5 C#
0x1D in object.b8bd1d31-3e2e-454d-bd94-9d5dea40eddb C#

我没有用过xamarin,所以我可能错了


FYR,在本机android上,如果我尝试这样做,您应该在
main活动的
onCreate
中执行此操作,而不是在构造函数中执行此操作。
StartActivity
没有任何作用,代码继续运行,一旦离开OnCreate方法,它就会抛出一个异常。但是,异常只是外部代码,所以我认为这对muchic没有帮助,没想到在Xamarin上调试会如此困难。您可以包含导致崩溃的事件的logcat捕获吗?它应该包含更多的信息,而不仅仅是崩溃堆栈跟踪。