本机模块:
java :
1 .实现1.ToastModule本机软件包的核心操作
publicclasstoastmoduleextendsreactcontextbasejavamodule {
//自定义常数
privatestaticfinalstringduration _ short _ key=' short ';
privatestaticfinalstringduration _ long _ key=' long ';
//制作方法
公共模型(reactapplicationcontextreactcontext ) {
super (快速上下文;
}
设置//js呼叫本机模块的名称
@Override
公共字符串获取名称
返回' toast example ';
}
//使用预定义常数的场景
@Override
公共地图获取常量(
final Map constants=new HashMap (;
constants.put (duration _ short _ key,Toast.LENGTH_SHORT );
constants.put (duration _ long _ key,Toast.LENGTH_LONG );
返回常数;
}
//*
*演示js如何调用java
* Java方法需要注释@ReactMethod。 方法的返回类型必须为void
*/
@ReactMethod
公共void show (string msg,int time ) {
toast.maketext (getreactapplicationcontext (,msg,time ).show );
}
}
2.toast pack注册模块
publicclasstoastpackageimplementsreactpackage {
//创建本机模块
@Override
publiclistcreatenativemodules (reactapplicationcontextreactcontext ) (
List list=new ArrayList (;
list.add(newtoastmodule ) reactcontext );
返回列表;
}
//创建本地视图
@Override
公共列表创建视图管理(reactapplicationcontextreactcontext ) {
List list=new ArrayList (;
返回列表;
}
}
3 .主应用程序关系本机模块注册类
@Override
保护列表获取包(
return Arrays.asList (
new MainReactPackage (,new ToastPackage )。
);
}
js:
方式1 :
native modules.toast example.show (' dad asdasdas ',native modules.toast example.short ) )。
方式2
ToastExample.js:
//rn引入中原生模块的类
import { native modules } from ' react-native ';
//导出自定义本机模块
exportdefaultnativemodules.toast example;
ToastExampleDemo.js
//导入直接使用本机模块
import Toast from './ToastExample ';
Press=() )。
Toast.show (弹出窗口Toast )、Toast.SHORT );
(;
本机UI组件:
java:
1.WebViewManager.js本机UI组件类
publicclasswebviewmanagerextendssimpleviewmanager {
返回调用//js时使用的名称
@Override
公共字符串获取名称
返回' RCT webview ';
}
//创建用于初始化的实例控件对象
@Override
保护webviewcreateviewinstance (themedreactcontextreactcontext ) {
webview webview=new webview (react context );
webview.setwebviewclient (newwebviewclient ) )。
@Override
publicbooleanshouldoverrideurlloading (webview view,String url ) )。
view.loadURL(URL;
返回真;
}
);
返回webview;
}
设置//rn的方法属性
@reactprop(name='URL ' ) )。
publicvoidseturl(webviewview,@Nullable String url )。
view.loadURL(URL;
}
@reactprop(name='html ' ) )。
publicvoidsethtml(webviewview,@Nullable String html )。
view.loaddata(html,' text/html; charset=UTF-8 ',' utf-8 ';
}
}
2 .注册本机组件
@Override
公共列表创建视图管理(reactapplicationcontextreactcontext ) {
List list=new ArrayList (;
返回列表;
}
3 .管理注册
@Override
保护列表获取包(
return Arrays.asList (
new MainReactPackage (,new ToastPackage )。
);
}