在 nativescript 中编写 java 代码并直接在 javascript 中使用它
这是 Android studio 中项目结构的图像:
这是 nativescript 项目的项目结构图:
如你所见,它们是一样的。所以当我们在 android studio 中编写时,我们可以在 nativescript 中编写 java 代码。
我们想将 Toast 添加到 nativescript 的默认应用程序中。在创建一个新的 nativescript 项目之后创建一个目录 java/org/example
目录,如下所示:
在 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");
}
}
现在,当你按下按钮时,它会显示一个祝酒词;
备注 :
- showToast 函数接受上下文将它传递给
Toast.makeText
,我们以这种方式向它传递了一个上下文:application.android.context
- TypeScript 不知道什么是
org
is,所以我们宣称:declare var org:any;