2017-09-21 7 views
0

ホーム画面に反応するネイティブアプリにアンドロイドの戻るボタンを押してアプリの機能を終了しました。しかし、私が他の画面でボタンをアンドロイドすると、それも呼び出されています。戻るボタンネイティブ出口アプリに対応する

componentDidMount() { 

    if (Platform.OS == "android") { 
     BackHandler.addEventListener('hardwareBackPress', this.handleBackButton);       
    } 
    this._setupGoogleSignin();   
    this._getUserDetails(); 
    const { navigate } = this.props.navigation; 
    console.log("object url is", this.state.postsArray[0].url); 

} 

handleBackButton =() => {    
    Alert.alert(
     'Exit App', 
     'Exiting the application?', [{ 
      text: 'Cancel', 
      onPress:() => console.log('Cancel Pressed'), 
      style: 'cancel' 
     }, { 
      text: 'OK', 
      onPress:() => BackHandler.exitApp() 
     }, ], { 
      cancelable: false 
     } 
    ) 
    return true; 
    } 
componentWillUnmount() { 
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton); 
    } 

答えて

2

あなたはそれがまだ呼び出されるイベントリスナーを削除しない場合は、他の画面やHomeScreenをアンマウントしながら、移動するとき、あなたのホームスクリーンはまだ実装されている場合。

あなたが働いていない

onButtonPress =() => { 
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton); 
    // then navigate 
    navigate('NewScreen'); 
} 

handleBackButton =() => { 
Alert.alert(
    'Exit App', 
    'Exiting the application?', [{ 
     text: 'Cancel', 
     onPress:() = > console.log('Cancel Pressed'), 
     style: 'cancel' 
    }, { 
     text: 'OK', 
     onPress:() = > BackHandler.exitApp() 
    }, ], { 
     cancelable: false 
    } 
) 
    return true; 
} 

componentDidMount() { 
    BackHandler.addEventListener('hardwareBackPress', this.handleBackButton); 
} 

componentWillUnmount() { 
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton); 
} 
+0

、移動したり、アンマウント上のEventListenerをクリアする必要があります。まだ他の画面に表示されています –

+0

@ParasWatts試したコードで質問を更新できますか? – bennygenel

+0

ホーム画面は、アプリケーションを開くと開くメイン画面です。だから私はハードウェアのバックボタンをクリックすると、アプリから終了したい。私は私の答えで言ったようにコード –

-1
BackHandler.addEventListener('hardwareBackPress', function() { 
    Alert.alert(
     'Thoát Khỏi Ứng Dụng', 
     'Bạn có muốn thoát không?', [{ 
      text: 'Cancel', 
      onPress:() => console.log('Cancel Pressed'), 
      style: 'cancel' 
     }, { 
      text: 'OK', 
      onPress:() => BackHandler.exitApp() 
     }, ], { 
      cancelable: false 
     } 
    ) 
    return true; 
}) 
+0

それは私のために働く! ^^ –

関連する問題