在 nativescript 中编写 java 代码并直接在 javascript 中使用它

这是 Android studio 中项目结构的图像:

StackOverflow 文档

这是 nativescript 项目的项目结构图:

StackOverflow 文档

如你所见,它们是一样的。所以当我们在 android studio 中编写时,我们可以在 nativescript 中编写 java 代码。

我们想将 Toast 添加到 nativescript 的默认应用程序中。在创建一个新的 nativescript 项目之后创建一个目录 java/org/example 目录,如下所示:

StackOverflow 文档

example 目录中创建一个新的 MyToast.java 文件;

MyToast.java:

package org.example;

import android.widget.Toast;
import android.content.Context;

public class MyToast{

    public static void showToast(Context context,String text ,String StrDuration ){
      int duration;
      switch (StrDuration){
          case "short":
              duration = Toast.LENGTH_SHORT;
              break;
          case "long":
              duration = Toast.LENGTH_LONG;
              break;
      }
        Toast.makeText(context,text, Toast.LENGTH_SHORT).show();
    }
}

注意 :不要忘记包名;

app.component.ts:

import {Component} from "@angular/core";
let application = require("application");

declare var org:any;
@Component({
    selector: "my-app",
    templateUrl: "app.component.html",
})
export class AppComponent {
    public counter: number = 16;

    public get message(): string {
        if (this.counter > 0) {
            return this.counter + " taps left";
        } else {
            return "Hoorraaay! \nYou are ready to start building!";
        }
    }

    public onTap() {
        this.counter--;
        org.example.MyToast.showToast(application.android.context,"You pressed the button","short");
    }
}

现在,当你按下按钮时,它会显示一个祝酒词;

备注

  1. showToast 函数接受上下文将它传递给 Toast.makeText,我们以这种方式向它传递了一个上下文:application.android.context
  2. TypeScript 不知道什么是 orgis,所以我们宣称:declare var org:any;