Ошибка типа: android.widget.Button {1e209aa1VFED ... C.........} в недопустимом экземпляре представления - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь использовать нативные коды в nativescript напрямую.я получаю эту ошибку при добавлении созданного прокси android.widget.Button в javascript в StackLayout (который предопределен в nativescript)

Произошло неперехваченное исключение в "основном" потоке.com.tns.NativeScriptException: не удалось вызвать метод js onViewAttachedToWindow

Ошибка: android.widget.Button {1e209aa2 VFED..C.......Я.0,0-0,0} не является допустимым экземпляром View.Файл: "file: ///data/data/org.nativescript.Tekmo/files/app/tns_modules/tns-core-modules/ui/core/view-base/view-base.js, строка: 414, столбец:12

StackTrace: Frame: function: 'ViewBase._addView', file: 'file: ///data/data/org.nativescript.Tekmo/files/app/tns_modules/tns-core-modules/ui/core/view-base/view-base.js ', строка: 414, столбец: 19 Кадр: функция:' LayoutBaseCommon.addChild ', файл:' file: ///data/data/org.nativescript.Tekmo/files/app/tns_modules/tns-core-modules/ui/layouts/layout-base-common.js ', строка: 44, столбец: 14 Кадр: функция:' onNavigatingTo ', файл:' файл: /// data / data/org.nativescript.Tekmo/files/app/main-page.js ', строка: 15, столбец: 12 Кадр: функция:' Observable.notify ', файл:' file: ///data/data/org.nativescript.Tekmo / files / app / tns_modules / tns-core-modules / data / observable / observable.js ', строка: 110, столбец: 23 Кадр: функция:' PageBase.onNavigatingTo ', файл:' файл: /// data/data/org.nativescript.Tekmo/files/app/tns_modules/tns-core-modules/ui/page/page-common.js ', строка: 107, column: 14 Frame: функция: 'FrameBase._onNavigatingTo', file: 'file: ///data/data/org.nativescript.Tekmo/files/app/tns_modules/tns-core-modules/ui/frame/frame-common.js ', строка: 276, столбец: 37 Frame: функция:' FrameBase.performNavigation ', файл:' file: ///data/data/org.nativescript.Tekmo/files/app/tns_modules/tns-core-modules/ui/frame/frame-common.js ', строка: 248, столбец: 14 Frame: функция:' FrameBase._processNextNavigationEntry ', файл:' file: ///data/data/org.nativescript.Tekmo/files/app/tns_modules/tns-core-modules/ui/frame/frame-common.js ', строка: 241, столбец: 22 Кадр: функция:' Frame._processNextNavigationEntry ', файл:' файл: /// data / data / org.nativescript.Tekmo / files / app / tns_modules / tns-core-modules / ui / frame / frame.js ', строка: 143, столбец: 58 Frame: функция:' Frame._onAttachedToWindow ', файл:' file: ///data/data/org.nativescript.Tekmo/files/app/tns_modules/tns-core-modules/ui/frame/frame.js ', строка: 118, столбец: 14 Кадр: функция:' AttachListener.onViewAttachedToWindow ', файл: 'файла: /// данные / данные / выводаrg.nativescript.Tekmo / files / app / tns_modules / tns-core-modules / ui / frame / frame.js ', строка: 35, столбец: 27

в com.tns.Runtime.callJSMethodNative (NativeMethod) в com.tns.Runtime.dispatchCallJSMethodNative (Runtime.java:1120) в com.tns.Runtime.callJSMethodImpl (Runtime.java:1000) в com.tns.Runtime.callJSMethod (Runtime.java:987 в com.tns.Runtime.callJSMethod (Runtime.java:967) в com.tns.Runtime.callJSMethod (Runtime.java:959) в com.tns.gen.java.lang.Object_frame_29_36_AttachListener.onViewAtta_j_t_t_T_W_T_W_T_W_T_W_T_W_T_W_T_W.view.View.dispatchAttachedToWindow (View.java:14835) в android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2989) в android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2 .77) и вdispatchAttachedToWindow (ViewGroup.java:2997) в android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2997) в android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2997) в android.view.ViewGroup.запустить (ViewRootImpl.java:7057) вandroid.view.Choreographer $ CallbackRecord.run (Choreographer.java:829) в android.view.Choreographer.doCallbacks (Choreographer.java:606) в android.view.Choreographer.doFrame (Choreographer.java:576) в и.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:815) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.цикл (Looper.java:145) в android.app.ActivityThread.main (ActivityThread.java:6934) в java.lang.reflect.Method.invoke (собственный метод) в java.lang.reflect.Method.invoke (метод.Java: 372) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1404) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199)

var createViewModel = require("./main-view-model").createViewModel;

var application = require("application");
const toast = android.widget.Toast
var context = application.android.context

function onNavigatingTo(args) {
    var page = args.object;
    page.bindingContext = createViewModel();

    var button = new android.widget.Button(context);
    var text = "My Button"; // JavaScript string
    button.setText(text);

    var parent=page.getViewById("parent")
    parent.addChild(button)
}

1 Ответ

0 голосов
/ 24 декабря 2018

NativeScript имеет компонент Button , который вы можете использовать напрямую.Если вы хотите получить доступ к каким-либо собственным свойствам Button, то просто получите доступ к кнопке .nativeView on {N} после ее загрузки, она вернет android.widget.Button при работе на Android / UIButton в iOS.

.addChild исключает компоненты, построенные на иерархии представления {N}, если вы хотите добавить собственный элемент в пользовательский интерфейс, вы можете использовать PlaceHolder .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...