react-native 与原生互相调用

react-native 与原生互相调用

explain

react-native也相当于一个activity,所以他启动原生activity,我们需要新建一个module,在其中新建启动原生activity的方法,如果传参数就用intent;如果需要返回的话就需要用到回调函数;同样有原生activity启动react-native同样点击按钮,触发方法,启动react-native的activity,传递参数就用intent.

code

1.index.android.js   调用nativemodules.
_goNative=()=>{
    NativeModules.MyMapIntentModule.startActivityByClassname('com.demo.MapActivity',"盘古花园")
  }
2.MyMapIntentModule.java  nativemodule启动原生activity,并传递参数
public class MyMapIntentModule extends ReactContextBaseJavaModule{
    @Override
    public String getName() {
        return "MyMapIntentModule";
    }

    public MyMapIntentModule(ReactApplicationContext reactContext) {
        super(reactContext);
    }
    public final  static String EXTRA_SECTIONNAME="com.demo.MyMapIntentModule.sectionName";
    @ReactMethod
    public void startActivityByClassname(String activityClassName,String sectionName){
        try{
            System.out.println("nihao"+activityClassName);
            Activity currentActivity=getCurrentActivity();
            Class aimActivity=Class.forName(activityClassName);
            Intent intent=new Intent(currentActivity,aimActivity);
            intent.putExtra(EXTRA_SECTIONNAME,sectionName);
            currentActivity.startActivity(intent);


        }catch (Exception e){
            throw  new JSApplicationCausedNativeException(
                    "Could not open the activity :" +e.getMessage()
            );
        }
    }
}
3.MapActivity   原生模块,原生模块启动React native Activity.通过Intent传递参数
4.MyMapIntentModule.java  通过getDataFromIntent 方法取得参数
  @ReactMethod
    public void getDataFromIntent(Callback successBack,Callback errorBack){
        try {
            Activity currentActivity=getCurrentActivity();
            String result=currentActivity.getIntent().getStringExtra(MapActivity.EXTRA_PERSONNAME);
            System.out.println("enter getDataFromIntent     ="+result);
            successBack.invoke(result);
        }catch (Exception e){
            errorBack.invoke(e.getMessage());
        }
    }

5.index.android.js 调用nativemodule的getDataFromIntent的方法来获取数据,方法返回类型都为void,则必须要通过回调函数来返回。

refs

https://github.com/ipk2015/RN-Resource-ipk/tree/master/react-native-docs


last update 2016-09-20

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值