Finally, I found my answer.
I changed the ViewPager with a layout to keeps my fragments(a frame layout). Then I added fragments into a fragmentTransaction.
By touching an item on BottomNavigation, current fragment hides and new fragments goes to shown with a fade animation defined in fragmentTransaction.
and this is my code:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_page);
    addFragmentsToManager();
}
private void addFragmentsToManager() {
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
    fragmentTransaction.add(R.id.flContent, tripFragment, tripFragment.getClass().getSimpleName());
    fragmentTransaction.add(R.id.flContent, notificationFragment, notificationFragment.getClass().getSimpleName());
    fragmentTransaction.add(R.id.flContent, searchFragment, searchFragment.getClass().getSimpleName());
    fragmentTransaction.add(R.id.flContent, profileFragment, profileFragment.getClass().getSimpleName());
    fragmentTransaction.hide(tripFragment);
    fragmentTransaction.hide(notificationFragment);
    fragmentTransaction.hide(searchFragment);
    fragmentTransaction.hide(profileFragment);
    fragmentTransaction.commit();
}
private void changeTab(int position) {
    Fragment fragment;
    switch (position) {
        fragment = .....// get framgnet from position
    }
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
    fragmentTransaction.hide(prvFragment);
    fragmentTransaction.show(fragment).commit();
    prvFragment = fragment;
}