Android onBackPressed片段在关闭应用程序时转到另一个片段
我正在打开一个片段,穿过另一个片段。从一个日历片段我打开一个搜索片段,我希望当这个人在搜索片段中并按下返回键时,它会将他们带到日历片段,而不是关闭应用程序 在MainActivity.java中,我实现了onBackPressed方法Android onBackPressed片段在关闭应用程序时转到另一个片段,android,android-fragments,Android,Android Fragments,我正在打开一个片段,穿过另一个片段。从一个日历片段我打开一个搜索片段,我希望当这个人在搜索片段中并按下返回键时,它会将他们带到日历片段,而不是关闭应用程序 在MainActivity.java中,我实现了onBackPressed方法 @Override public void onBackPressed() { if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat
@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
这就是我在MainActivity.java中打开片段的方式
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_calendar:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new CalendarFragment()).commit();
break;
case R.id.nav_survey:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new SurveyFragment()).commit();
break;
case R.id.nav_forum:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ForumFragment()).commit();
break;
case R.id.nav_logout:
logout();
break;
case R.id.nav_contact:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ContactFragment()).commit();
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
这是我如何从日历片段中打开搜索片段的
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.search:
getFragmentManager().beginTransaction().replace(R.id.fragment_container, new SearchFragment()).commit();
return false;
default:
break;
}
return super.onOptionsItemSelected(item);
}
有没有办法只改变该片段上的行为,而保持其余片段上的正常行为 当您在日历片段中编写代码以打开搜索片段时,请在片段事务操作中添加以下行,如…
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.search:
getFragmentManager().beginTransaction().add(R.id.fragment_container, new SearchFragment()).addToBackStack(null).commit();
return false;
default:
break;
}
return super.onOptionsItemSelected(item);
}
使用supportFragmentManager中的GetBackBackbackEntryCount并检查计数,根据条件只需更换fragmentHello!尝试在您的FragmentTransaction中添加.addToBackStack(null)此操作有效!您能解释一下这是如何工作的或者为什么工作的吗?因为当您使用add方法时,它会将该片段添加到堆栈中,所以当我们从第二个片段返回时。我们仍然有堆栈中的第一个片段