九、TouchableOpacity的onPress方法失效

react native要作为Fragment页,嵌入到Activity中,需要用到ReactRootView类。具体操作就不做解释了。今天要记录的是TouchableOpacity的onPress方法
点击失效。花了一上午事件才找到原因。嵌入fragment的父activity必须得要在onResume, onPause, onDestroy中添加rn的host函数。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
kotlin写法:

class MeActivity : AppCompatActivity(), DefaultHardwareBackBtnHandler {

/*省略*/
override fun invokeDefaultOnBackPressed() {
super.onBackPressed();
}

override fun onResume() {
super.onResume()
(application as ReactApplication).reactNativeHost.reactInstanceManager.onHostResume(this, this);
}

override fun onPause() {
super.onPause()
(application as ReactApplication).reactNativeHost.reactInstanceManager.onHostPause(this);
}

override fun onDestroy() {
super.onDestroy()
(application as ReactApplication).reactNativeHost.reactInstanceManager.onHostDestroy(this);
}

}
必须添加上述几个方法,不然onPress, console.warn等交互语句都失效