在NativeScript中使用JS创建自定义类,并在原生Android中使用它

时间:2017-05-16 23:02:56

标签: android nativescript

在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自由地使用它。

1 个答案:

答案 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();

        }