2015-08-31 2 views
1

Я довольно новый для Xamarin/андроида развития, но это довольно много, что я пытаюсь концептуально:Начать деятельность от конструктора другой деятельности?

  • Имейте основную деятельность, которая проверяет или не пользователь уже вошел в
  • , если пользователь вошел в систему, запустите MainAppActivity
  • Если пользователь не вошел в систему, запустите OnboardingActivity

причина, я думаю, что они должны быть в различных видах деятельности для общих соображений дизайна (разделение задач и т.д.) - но также потому, что оба действия имеют разные темы. (The Вводный процесс не имеет строку заголовка)

В коде, это должно быть довольно много, что мне нужно:

[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); 
     } 
    } 
} 

Однако этот код просто бросает неопределенное исключение.

Если я попробую то же самое во время процесса protected override void OnCreate(Bundle bundle), я получаю исключение.

Однако, когда я связываю что-то подобное с событием кнопки и нажимаю его вручную, он будет работать. (Это не мое намерение, но проверить, нет ничего плохого в моей деятельности)

Итак, вопрос в том, как мне сделать что-то вроде этого?

Edit: Вот 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# 
+0

Вы могли бы включать в себя LogCat захват событий, приведших к аварии? Он должен содержать больше информации, чем просто трассировка стека. – matthewrdev

ответ

1

Я не использовал Xamarin, так что я мог бы неправильно.

FYR, на родной андроида, вы должны сделать это в onCreate вашего MainActivity вместо Конструктора

+0

Если я попробую, я также получу неуказанное исключение. «StartActivity» ничего не делает, код продолжает идти, и как только он покидает метод OnCreate, он выдает исключение. –

+0

Возможно, вы могли бы добавить свою трассировку стека как редактирование –

+0

Хорошо, у меня есть. Однако исключение - это просто внешний код, поэтому я не думаю, что он очень помогает –

Смежные вопросы