-
Notifications
You must be signed in to change notification settings - Fork 1
ReactActivity
罗坤 edited this page Mar 6, 2020
·
2 revisions
React Native应用程序的基础活动。
自定义活动 activity 继承ReactActivity
可以在new Intent(activity, ExampleActivity.class)
之后仍能监听到 MainActivity
的所有全局事件(如alert,Modal)。(原因详见ReactContext-LifecycleEventListener)
@ReactMethod
@ReactMethod
void navigateToExample() {
Activity activity = getCurrentActivity();
if (activity != null) {
Intent intent = new Intent(activity, ExampleActivity.class);
activity.startActivity(intent);
}
}
ExampleActivity.class
public class ExampleActivity extends ReactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
返回从JavaScript注册的主要组件的名称。常用于安排组件的渲染。比如“MoviesApp”
- 例如:
在入口文件
index.js
使用AppRegistry注册2个根组件App1
和App2
。
import { AppRegistry } from 'react-native'
class App1 extends React.Component {
render(){
return (
<View>
</View>
)
}
}
class App2 extends React.Component {
render(){
return (
<View>
</View>
)
}
}
AppRegistry.registerComponent("App1", () => App);
AppRegistry.registerComponent("App2", () => App2);
MainActivity.java
public class MainActivity extends ReactActivity {
@Override
protected String getMainComponentName() {
return "App1";
}
}
SecondActivity.java
public class ExampleActivity extends ReactActivity {
@Override
protected String getMainComponentName() {
return "App2";
}
}
当显式Intent打开SecondActivity.java
时,将会渲染App2组件。使用Intent跳转时别忘了在AndroidManifest.xml
在注册<activity android:name=".ExampleActivity" />
return new ReactActivityDelegate(){}
在构造时调用,如果您有自定义的委托实现,则覆盖。(例如:react-native-gesture-handler 重写ReactActivityDelegate.ReactRootView
修改内置触摸系统)
protected ReactActivityDelegate createReactActivityDelegate() {
return new ReactActivityDelegate(this, getMainComponentName()) {
@Override
protected ReactRootView createRootView() {
...
}
@Override
//覆盖重写ReactActivityDelegate类内部方法
}
}
该方法实现(implements)自:
public interface DefaultHardwareBackBtnHandler {
void invokeDefaultOnBackPressed();
}
DeviceEventManagerModule
用于委派硬件后退按钮事件的接口。
默认情况下,所有onBackPress()
都不会被执行默认的后退处理(backpress handler), 而是将其传播到JS实例。如果JS不想处理backpress,它应该回调到native以调用该函数以执行默认事件。
- 例如:
@Override
public void onBackPressed() {
invokeDefaultOnBackPressed();
}