我是android开发的新手,在锻炼中不断学习。所以,我正在开发一个带有导航抽屉的应用程序,其中有菜单按钮。除此之外,我还想在每个片段中添加返回(箭头)按钮,以返回到以前的活动。为了做到这一点,我在每个片段中使用了以下代码,但它不工作。后退按钮总是返回到导航抽屉,而不是前一个片段。
Toolbar toolbar=rootView.findViewById(R.id.toolbar);
final ActionBar actionBar=((AppCompatActivity)getActivity()).getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.getTitle();
我探索并阅读了许多与后退按钮和导航抽屉问题相关的评论,比如在 此处, 此处, 此处, 此处以及许多其他的问题。 我尝试了不同的解决方案,但问题依然存在。公共boolean onOptionsItemSelected(MenuItem item)没有任何作用。
下面是我的MainActivity的样子
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar=findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer=findViewById(R.id.drawer_layout);
NavigationView navigationView=findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
ActionBarDrawerToggle toggle=new ActionBarDrawerToggle(this,drawer,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
if(savedInstanceState==null){
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new HomeFragment()).commit();
navigationView.setCheckedItem(R.id.nav_home);}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.nav_home:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new HomeFragment()).addToBackStack(null).commit();
break;
case R.id.nav_help:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new HelpFragment()).addToBackStack(null).commit();
break;
case R.id.nav_about:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new AboutFragment()).addToBackStack(null).commit();
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
}