在 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;