2016-02-12 63 views
1

我不理解如何實現後退按鈕。該sceen以編程方式推送,當我點擊該按鈕時,它將繼續彈出屏幕,如果沒有更多場景可以彈出,則退出反應原生視圖並返回本地視圖反應原生如何實現後退按鈕

這裏是我在活動

@Override 
public void invokeDefaultOnBackPressed() { 
    getReactInstanceManager().onBackPressed(); 
} 

我需要重寫OnBackPressed在這種情況下?

這裏是

而且在這裏登錄,我怎麼設置導航

render() { 

    return (
     <Navigator 
      initialRoute={{name: 'root'}} 
      renderScene={this.renderScene.bind(this)} 
      configureScene={(route) => { 
       if (route.sceneConfig) { 
        return route.sceneConfig; 
       } 
       return Navigator.SceneConfigs.FloatFromRight; 
      }} /> 
    ); 
    } 
    renderScene(route, navigator) { 
    return (
    <Login 
     navigator={navigator} /> 
); 

}是第一現場

class Login extends Component { 

constructor(props) { 
    super(props);   
    _navigator = this.props.navigator 
    // Private variables 
    this.state = { 
     isLoading: true, 

    } 
} 


       <View style={styles.leftContainer}> 
        <TouchableHighlight style={styles.button} onPress={this.onPressButton}> 
         <Text style={[styles.buttonText]}>Invite</Text> 
        </TouchableHighlight> 
       </View> 

onPressButton() { 
    console.log("back button"); 
    if (this.props.navigator && this.props.navigator.getCurrentRoutes() > 1) { 
     console.log("pop"); 
     this.props.navigator.pop(); 
     //return true; 
    } 
    console.log("false"); 
    //return false; 

}   

}

當我按一下按鈕沒有發生。我想要的是退出反應原生視圖,因爲它位於場景的頂部。

奇怪的是我看到控制檯日誌打印之前,我甚至點擊按鈕。這是正常的嗎?

回答

1
onPress={this.onPressButton} 

onPress={() => this.onPressButton}

onPress={this.onPressButton.bind(this)}

綁定得當,看看是否能工程。在es6中記住,你必須正確地綁定你的功能。 ES5自動執行。

5

首先,從react-native導入BackAndroid。之後,處理硬件後退按鈕

componentDidMount() { 
    BackAndroid.addEventListener('hardwareBackPress', this.onBackPress.bind(this)); 
} 

如果你想關閉應用程序,從onBackPress()返回false,否則返回true。

onBackPress(){ 
    this.props.nav.pop(); 
    return false; 
} 
相關問題