react native开启新的ReactActivity

2020-11-20  本文已影响0人  MasterPaul

1、新建ReactActivity和相应的js组件
js文件

import LivePage from './src/pages/LivePage';
AppRegistry.registerComponent('live', () => LivePage);

java文件

public class LiveActivity extends ReactActivity  {


    public static final String TAG = "LiveActivity";

    @androidx.annotation.Nullable
    @Override
    protected String getMainComponentName() {
        return "live";
    }

//重写ReactActivityDelegate
    @Override
    protected ReactActivityDelegate createReactActivityDelegate() {

        return new ReactActivityDelegate(this,getMainComponentName()){
            @Override
            public boolean onBackPressed() {
                return false;
            }

            @androidx.annotation.Nullable
            @Override
            protected Bundle getLaunchOptions() {

                Intent intent = getIntent();
                Bundle bundle = new Bundle();
                if(intent.hasExtra("data")){
                    bundle.putString("data",intent.getStringExtra("data"));
                }

                return bundle;
            }
        };

    }


}

2、注册到manifest中
3、创建跳转的module,并添加到package中


import android.app.Activity;
import android.content.Intent;
import android.text.TextUtils;

import com.facebook.react.bridge.ActivityEventListener;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule;

import java.util.Objects;


/**
 * Created by cai on 2017/7/13.
 */

public class StartNewHelper extends ReactContextBaseJavaModule {

    public StartNewHelper(ReactApplicationContext reactContext) {
        super(reactContext);

    }

    @ReactMethod
    public void startNewActivity(String name,String params) {
        Activity activity = getCurrentActivity();
        if(TextUtils.equals(name,"live")) {
            Intent intent = new Intent(activity, LiveActivity.class);
            intent.putExtra("data", params);
            activity.startActivity(intent);
        }
    }



    @Override
    public String getName() {
        return "startNew";
    }

    @ReactMethod
    public void finish(){

        getCurrentActivity().finish();
    }
}

js端封装

import {NativeModules} from 'react-native'

const startHelper = NativeModules.startNew;

export default class StartHelper {
//关闭当前activity
    static finish(){
        startHelper.finish()
    }
//打开新页面并传参
    static newPage(moduleName,param) {
        startHelper.startNewActivity(moduleName,param)
    }
}

4、调用

StartHelper.newPage('live',JSON.stringify(item))

上一篇 下一篇

猜你喜欢

热点阅读