2016-04-13 5 views
0

Я создаю свое первое приложение в NativeScript 1.7.0 (на данный момент платформа для Android), и я сталкиваюсь с этой ошибкой, которая время от времени приводит к сбою приложения при нажатии кнопки «Назад» на определенных страницах. Я не уверен, какие именно условия для этого происходят.NativeScriptException: поврежденный стек навигации

С кем-нибудь еще сталкивались с этим раньше? Любые идеи, почему это может происходить, и как его исправить или избежать?

NativeScript 1.7.0 ТНС-ядро-модули^1.7.1 ТНС-андроид 1.7.1

Вот информация о исключением того, что печатается в консоли:

com.tns.NativeScriptException: 
Calling js method onBackPressed failed 

Error: Corrupted navigation stack; page: undefined; currentNavigationPage: undefined 
File: "/data/data/com.carteplay.consumer/files/app/tns_modules/ui/frame/frame.js, line: 664, column: 43 

StackTrace: 
    Frame: function:'Frame._processNavigationQueue', file:'/data/data/com.carteplay.consumer/files/app/tns_modules/ui/frame/frame-common.js', line: 173, column: 19 
    Frame: function:'_completePageAddition', file:'/data/data/com.carteplay.consumer/files/app/tns_modules/ui/transition/transition.js', line: 228, column: 15 
    Frame: function:'_onFragmentShown', file:'/data/data/com.carteplay.consumer/files/app/tns_modules/ui/transition/transition.js', line: 197, column: 9 
    Frame: function:'onFragmentShown', file:'/data/data/com.carteplay.consumer/files/app/tns_modules/ui/frame/frame.js', line: 43, column: 22 
    Frame: function:'FragmentClass.onCreateView', file:'/data/data/com.carteplay.consumer/files/app/tns_modules/ui/frame/frame.js', line: 537, column: 13 
    Frame: function:'NativeScriptActivity.onBackPressed', file:'/data/data/com.carteplay.consumer/files/app/tns_modules/ui/frame/frame.js', line: 664, column: 44 


    at com.tns.Platform.callJSMethodNative(Native Method) 
    at com.tns.Platform.dispatchCallJSMethodNative(Platform.java:816) 
    at com.tns.Platform.callJSMethod(Platform.java:715) 
    at com.tns.Platform.callJSMethod(Platform.java:694) 
    at com.tns.Platform.callJSMethod(Platform.java:684) 
    at com.tns.NativeScriptActivity.onBackPressed(NativeScriptActivity.java:41) 
    at android.app.Activity.onKeyUp(Activity.java:2179) 
    at android.view.KeyEvent.dispatch(KeyEvent.java:2650) 
    at android.app.Activity.dispatchKeyEvent(Activity.java:2424) 
    at com.tns.NativeScriptActivity.dispatchKeyEvent(NativeScriptActivity.java) 
    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1877) 
    at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3884) 
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3867) 
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3463) 
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3513) 
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3482) 
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3567) 
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3490) 
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3624) 
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3463) 
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3513) 
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3482) 
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3490) 
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3463) 
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3513) 
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3482) 
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3600) 
    at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3752) 
    at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2022) 
    at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1738) 
    at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1729) 
    at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:1999) 
    at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) 
    at android.os.MessageQueue.nativePollOnce(Native Method) 
    at android.os.MessageQueue.next(MessageQueue.java:133) 
    at android.os.Looper.loop(Looper.java:124) 
    at android.app.ActivityThread.main(ActivityThread.java:5457) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 
    at dalvik.system.NativeStart.main(Native Method) 

ответ

1

Убедитесь, что вы используете Android 1.7.1 или новее как модулей tns-core, так и платформы. Несколько версий NS имели некоторые проблемы с навигацией. Я понимаю, что все они должны быть решены в v1.7.1

Для обновления; перейти к главной директории проекта и сделать каждый из этих простых команд:

  • НПХ установить ТНС-ядро-модули @ последние -s
  • ТНСА платформы удалить андроид
  • ТНСА платформы добавить андроид

Затем вы можете ввести «cat package.json» или «type package.json», и вы должны увидеть модули платформы и ядра в версии 1.1.1 или выше.

+0

Я уже пользуюсь tns-core-modules и tns-android версии 1.7.1. В package.json: "ТНС-андроида": { "версия": "1.7.1" } "ТНС-ядро-модули": "^ 1.7.1" –

+0

Хм, теперь это очень интересно. 1. Легко ли это дублируется? 2. Можно ли разместить приложение где-нибудь для меня (или Telerik), чтобы посмотреть, чтобы мы могли понять, почему он рушится. – Nathanael

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