2016-03-03 89 views
3

我用在Android交换机在RN 0.21.0:阵营本地交换机上的Android报告错误

<Switch 
      onValueChange={(value) => this.setState({trueSwitchIsOn: value})}   
      value={this.state.trueSwitchIsOn} /> 

它showes错误:

(standard input):43372:03-03 09:32:02.096 E/unknown:React(11609): Exception in native call from JS 
(standard input):43373:03-03 09:32:02.096 E/unknown:React(11609): java.lang.NullPointerException 
(standard input):43374:03-03 09:32:02.096 E/unknown:React(11609): at android.text.StaticLayout.<init>(StaticLayout.java:58) 
(standard input):43375:03-03 09:32:02.096 E/unknown:React(11609): at android.support.v7.widget.SwitchCompat.makeLayout(SwitchCompat.java:606) 
(standard input):43376:03-03 09:32:02.096 E/unknown:React(11609): at android.support.v7.widget.SwitchCompat.onMeasure(SwitchCompat.java:526) 
(standard input):43377:03-03 09:32:02.096 E/unknown:React(11609): at android.view.View.measure(View.java:16529) 
(standard input):43378:03-03 09:32:02.096 E/unknown:React(11609): at com.facebook.react.views.switchview.ReactSwitchManager$ReactSwitchShadowNode.measure(ReactSwitchManager.java:56) 
(standard input):43379:03-03 09:32:02.096 E/unknown:React(11609): at com.facebook.csslayout.CSSNode.measure(CSSNode.java:137) 
(standard input):43380:03-03 09:32:02.096 E/unknown:React(11609): at com.facebook.csslayout.LayoutEngine.layoutNodeImpl(LayoutEngine.java:294) 
(standard input):43381:03-03 09:32:02.096 E/unknown:React(11609): at com.facebook.csslayout.LayoutEngine.layoutNode(LayoutEngine.java:210) 
(standard input):43382:03-03 09:32:02.096 E/unknown:React(11609): at com.facebook.csslayout.LayoutEngine.layoutNodeImpl(LayoutEngine.java:492) 
(standard input):43383:03-03 09:32:02.096 E/unknown:React(11609): at com.facebook.csslayout.LayoutEngine.layoutNode(LayoutEngine.java:210) 
(standard input):43384:03-03 09:32:02.096 E/unknown:React(11609): at com.facebook.csslayout.LayoutEngine.layoutNodeImpl(LayoutEngine.java:492) 

所以我想,测量误差和设置一个尺寸:

<Switch 
       onValueChange={(value) => this.setState({trueSwitchIsOn: value})} 
       style={{width:100, height:40, backgroundColor:'#a03'}} 
       value={this.state.trueSwitchIsOn} /> 

然后错误消失,空白区域showes没有**开关**查看。

回答

1

我也遇到过像你这样的问题,不知道如何修复它,我用npm install react-native-material-switch替换了官方交换机。

+0

我在JS中编写了自己的'Switch'组件。 – herbertD

+0

您是否设法解决交换机问题? –

+0

我已经通过编写自定义组件解决了这个问题。 – herbertD