【发布时间】:2020-07-23 18:23:34
【问题描述】:
我知道有与我要问的问题类似的问题,但没有一个能够解决我遇到的问题。
我有一个底部导航视图,其中包含五个使用 viewpager 的片段,其中一个片段打开一个活动。
问题
当我从片段打开活动时,它工作正常,但问题是当我按下返回时,它会回到打开活动的同一个片段。
解决方案
我希望当我退出活动时,它会转到前一个片段,而不是调用该活动的片段。
例如:如果用户在 HomeFragment 上并且用户点击了打开 Activity 的 Fragment(NewsFragment),并且用户按下回他们应该返回 HomeFragment,而不是 NewsFragment。
到目前为止我尝试了什么:
BottomnNvigationView 的 MainActivity 并且它在 Back Press 上
private BottomNavigationView.OnNavigationItemSelectedListener navListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.nav_library:
viewPager.setCurrentItem(0);
temp = temp.replace("-0", "") + "-0";
break;
case R.id.nav_technology:
viewPager.setCurrentItem(1);
temp = temp.replace("-1", "") + "-1";
break;
case R.id.nav_home:
viewPager.setCurrentItem(2);
temp = temp.replace("-2", "") + "-2";
break;
case R.id.nav_science:
viewPager.setCurrentItem(3);
temp = temp.replace("-3", "") + "-3";
break;
case R.id.nav_news:
viewPager.setCurrentItem(4);
temp = temp.replace("-4", "") + "-4";
Intent intent = new Intent(MainActivity.this,BrowserActivity.class);
startActivity(intent);
return true;
}
return true;
}
};
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
}
else {
String[] words = temp.split("-");
if(words.length<=2)
if (viewPager.getCurrentItem() != 2) {
temp = "";
viewPager.setCurrentItem(2);
}else
finish();
else {
temp = temp.replace("-" + words[words.length - 1], "");
int pos = viewPager.getCurrentItem();
if (viewPager.getCurrentItem() == pos)
pos = 2;
else
pos = 1;
viewPager.setCurrentItem(Integer.parseInt(words[words.length - pos]));
}
}
}
从 Fragment (BrowersActivity) On Back Press 调用的 Activity
@Override
public void onBackPressed() {
if (viewPager.getCurrentItem() != 0) {
viewPager.setCurrentItem(viewPager.getCurrentItem() - 1,false);
}else{
finish();
}
}
任何帮助将不胜感激。
【问题讨论】:
标签: android android-fragments android-activity android-viewpager