2016-11-03 14 views
1

私はPCLでXamarinフォームアプリケーションを構築しました。XamarinフォームPopAsyncクラッシュ

アプリケーションのクラッシュ、時にはawait Navigation.PopAsync(); に私はこのhttps://forums.xamarin.com/discussion/62414/app-resuming-results-in-crash-with-formsappcompatactivityを発見したが、それは

それは上記のアンドロイド5.0にのみ表示されます助けにはならないのです。私はここでXamarin.Forms 2.3.3

を使用しているクラッシュログです:

Xamarin caused by: android.runtime.JavaProxyThrowable: System.AggregateException: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. ---> System.AggregateException: One or more errors occurred. ---> Java.Lang.RuntimeException: Can not perform this action after onSaveInstanceState 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at Java.Interop.JniEnvironment+InstanceMethods.CallIntMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method) [0x00084] in <bd356ef77b9a4127a500b8385b303c4b>:0 
    at Android.Runtime.JNIEnv.CallIntMethod (System.IntPtr jobject, System.IntPtr jmethod) [0x0000e] in <bc38a7e9ac144e5b8f3cbfa1d1cb295b>:0 
    at Android.Support.V4.App.FragmentTransactionInvoker.Commit() [0x00033] in <27c17fe440cf491ba8255bcefade6e02>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.SwitchContentAsync (Xamarin.Forms.Page view, System.Boolean animated, System.Boolean removed, System.Boolean popToRoot) [0x0014b] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnPopViewAsync (Xamarin.Forms.Page page, System.Boolean animated) [0x00021] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.PopViewAsync (Xamarin.Forms.Page page, System.Boolean animated) [0x00000] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnPopped (System.Object sender, Xamarin.Forms.Internals.NavigationRequestedEventArgs e) [0x0000e] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.NavigationPage+<Xamarin-Forms-INavigationPageController-PopAsyncInner>d__63.MoveNext() [0x0006e] in <83d3340f3b274d389854ce45f51043f6>:0 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult() [0x00000] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at Xamarin.Forms.NavigationPage+<PopAsync>d__38.MoveNext() [0x001b9] in <83d3340f3b274d389854ce45f51043f6>:0 
    --- End of inner exception stack trace --- 
    at Xamarin.Forms.NavigationPage+<>c.<SafePop>b__93_0 (System.Threading.Tasks.Task`1[TResult] t) [0x0000e] in <83d3340f3b274d389854ce45f51043f6>:0 
    at System.Threading.Tasks.ContinuationTaskFromResultTask`1[TAntecedentResult].InnerInvoke() [0x00027] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Threading.Tasks.Task.Execute() [0x00016] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    --- End of inner exception stack trace --- 
---> (Inner Exception #0) System.AggregateException: One or more errors occurred. ---> Java.Lang.RuntimeException: Can not perform this action after onSaveInstanceState 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at Java.Interop.JniEnvironment+InstanceMethods.CallIntMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method) [0x00084] in <bd356ef77b9a4127a500b8385b303c4b>:0 
    at Android.Runtime.JNIEnv.CallIntMethod (System.IntPtr jobject, System.IntPtr jmethod) [0x0000e] in <bc38a7e9ac144e5b8f3cbfa1d1cb295b>:0 
    at Android.Support.V4.App.FragmentTransactionInvoker.Commit() [0x00033] in <27c17fe440cf491ba8255bcefade6e02>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.SwitchContentAsync (Xamarin.Forms.Page view, System.Boolean animated, System.Boolean removed, System.Boolean popToRoot) [0x0014b] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnPopViewAsync (Xamarin.Forms.Page page, System.Boolean animated) [0x00021] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.PopViewAsync (Xamarin.Forms.Page page, System.Boolean animated) [0x00000] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnPopped (System.Object sender, Xamarin.Forms.Internals.NavigationRequestedEventArgs e) [0x0000e] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.NavigationPage+<Xamarin-Forms-INavigationPageController-PopAsyncInner>d__63.MoveNext() [0x0006e] in <83d3340f3b274d389854ce45f51043f6>:0 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult() [0x00000] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at Xamarin.Forms.NavigationPage+<PopAsync>d__38.MoveNext() [0x001b9] in <83d3340f3b274d389854ce45f51043f6>:0 
    --- End of inner exception stack trace --- 
    at Xamarin.Forms.NavigationPage+<>c.<SafePop>b__93_0 (System.Threading.Tasks.Task`1[TResult] t) [0x0000e] in <83d3340f3b274d389854ce45f51043f6>:0 
    at System.Threading.Tasks.ContinuationTaskFromResultTask`1[TAntecedentResult].InnerInvoke() [0x00027] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Threading.Tasks.Task.Execute() [0x00016] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
---> (Inner Exception #0) Java.Lang.RuntimeException: Can not perform this action after onSaveInstanceState 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at Java.Interop.JniEnvironment+InstanceMethods.CallIntMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method) [0x00084] in <bd356ef77b9a4127a500b8385b303c4b>:0 
    at Android.Runtime.JNIEnv.CallIntMethod (System.IntPtr jobject, System.IntPtr jmethod) [0x0000e] in <bc38a7e9ac144e5b8f3cbfa1d1cb295b>:0 
    at Android.Support.V4.App.FragmentTransactionInvoker.Commit() [0x00033] in <27c17fe440cf491ba8255bcefade6e02>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.SwitchContentAsync (Xamarin.Forms.Page view, System.Boolean animated, System.Boolean removed, System.Boolean popToRoot) [0x0014b] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnPopViewAsync (Xamarin.Forms.Page page, System.Boolean animated) [0x00021] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.PopViewAsync (Xamarin.Forms.Page page, System.Boolean animated) [0x00000] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnPopped (System.Object sender, Xamarin.Forms.Internals.NavigationRequestedEventArgs e) [0x0000e] in <651b788f2205433c9db3a98957b5b8aa>:0 
    at Xamarin.Forms.NavigationPage+<Xamarin-Forms-INavigationPageController-PopAsyncInner>d__63.MoveNext() [0x0006e] in <83d3340f3b274d389854ce45f51043f6>:0 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0004e] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult() [0x00000] in <7f637a73ebd0402caa24252e5f30bf7b>:0 
    at Xamarin.Forms.NavigationPage+<PopAsync>d__38.MoveNext() [0x001b9] in <83d3340f3b274d389854ce45f51043f6>:0 
    --- End of managed Java.Lang.RuntimeException stack trace --- 
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
    at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1493) 
    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1511) 
    at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:638) 
    at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:617) 
    at md5b60ffeb829f638581ab2bb9b1a7f4f3f.FormsAppCompatActivity.n_onBackPressed(Native Method) 
    at md5b60ffeb829f638581ab2bb9b1a7f4f3f.FormsAppCompatActivity.onBackPressed(FormsAppCompatActivity.java:40) 
    at android.app.Activity.onKeyUp(Activity.java:2713) 
    at android.view.KeyEvent.dispatch(KeyEvent.java:3280) 
    at android.app.Activity.dispatchKeyEvent(Activity.java:2983) 
    at android.support.v7.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:524) 
    at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50) 
    at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:241) 
    at android.support.v7.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50) 
    at com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2689) 
    at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5233) 
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5186) 
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4633) 
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4686) 
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4652) 
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4794) 
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4660) 
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4851) 
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4633) 
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4686) 
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4652) 
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4660) 
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4633) 
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4686) 
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4652) 
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4827) 
    at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5070) 
    at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2877) 
    at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2449) 
    at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2440) 
    at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2854) 
    at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) 
    at android.os.MessageQueue.nativePollOnce(Native Method) 
    at android.os.MessageQueue.next(MessageQueue.java:323) 
    at android.os.Looper.loop(Looper.java:143) 
    at android.app.ActivityThread.main(ActivityThread.java:7230) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
+0

例外の本質はこれです。 onSaveInstanceStateの後でこのアクションを実行することはできません。追加できる関連コードはありますか? –

+0

@GeraldVersluis私はここに何が追加できるのか分かりません。ユーザーのポップページ –

+0

のどこにでも表示されるため、[この質問](http://stackoverflow.com/questions/7575921/illegalstateexception-can-not-perform-this-action-after-onsaveinstancestate-wit)の回答が表示されますかあなたに当てはまる? –

答えて

2

FormsAppCompatActivity

はあなたのコードがページdiplayingを操作することはできませんでしたので...

これだけです。私はこの瞬間のためにたくさんの選択肢がありませんでした。とにかく、プッシュの権利を持っていたのかもしれません。しかし、それはしません。私が選びまし ソリューションでした:

  1. は、私はカットオフができNavigationStack
  2. の先頭に戻ってそれをプッシュするために、NavigationStackからそれを削除履歴から目的のページを見つけますNavigationStackの欲しいページ
0

最初の行は、あなたのタスクがクラッシュしたため、アプリケーションがクラッシュしたと言っています。このクラス

public static class LogException 
{ 
    public static void LogExceptions(this Task task) 
    { 
     task.ContinueWith(t => 
     { 
      var aggException = t.Exception.Flatten(); 
      foreach (var exception in aggException.InnerExceptions) 
      { 
       System.Diagnostics.Debug.WriteLine("LOG EXCEPTION catch: " + exception); 
      } 
     }, 
     TaskContinuationOptions.OnlyOnFaulted); 
    } 
} 

を追加し、このようにそれを使用して:

Task.Factory.StartNew(() => PopYourPage()).LogExceptions(); 

アプリを殺していないこれらの例外をキャッチします。 何が飛び出していますか、それをよりよく説明できますか?

関連する問題