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))