在NativeScript世界中,是否可以创建一个扩展Android的TextView的JS文件,然后从原有的Android项目本地调用它?
例如,我派生了这个扩展android.widget.TextView的自定义TextView:
var constructorCalled = false;
var CustomTextView = android.widget.TextView.extend({
//constructor
init: function() {
constructorCalled = true;
this.setText("set in javascript");
},
});
现在我尝试通过调用:
来使用这个类CustomTextView customTextView = new CustomTextView();
在原生Android项目中。
注意:我已经查看了这个文档: https://docs.nativescript.org/angular/integration-with-existing-ios-and-android-apps/extend-existing-android-app-with-ns-angular2.html 并且它已经工作了,但是这个例子还不足以让我理解如何在JS中构建一个自定义类并让Java自由地使用它。
答案 0 :(得分:0)
感谢pkanev,你指出了正确的方向! 所以我修改了我定义的JS类:
var constructorCalled = false;
var CustomTextView = android.widget.TextView.extend(
"com.Arzath.custom.CustomTextView",
{
//constructor
init: function() {
constructorCalled = true;
this.setText("set in javascript");
},
});
接下来,我用这个命令重建我的android平台:
tns build android
这给了我一个Java类,我的src文件夹中的CustomTextView。
重要的是要注意,为了使用它,不要忘记启动运行时如下:
com.tns.Runtime runtime = com.tns.RuntimeHelper.initRuntime(MainActivity.this.getApplication());
if (runtime != null) {
runtime.run();
}