在 android 中从一个片段到另一个片段管理工具栏的导航和后退按钮
Manage toolbar's navigation and back button from fragment to fragment in android
我所有的片段都是通过ActionBarActivity
(mainActivity)控制的,在mainActivity里面有一个DrawerLayout
实现并通过 drawerLayout 的列表项点击推送所有子片段。我面临的问题是在通过 drawerLayout 推送片段后,我想将抽屉图标更改为 ToolBar
的后退图标,以便用户可以导航到上一个片段并处理 android.R.id.home 的回调在同一片段内或 mainActivity.
内
您已将 Fragment
添加到返回堆栈并在片段管理器中添加 listener
getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
} else {
//show hamburger
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
toggle.syncState();
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawerLayout.openDrawer(GravityCompat.START);
}
});
}
}
});
我所有的片段都是通过ActionBarActivity
(mainActivity)控制的,在mainActivity里面有一个DrawerLayout
实现并通过 drawerLayout 的列表项点击推送所有子片段。我面临的问题是在通过 drawerLayout 推送片段后,我想将抽屉图标更改为 ToolBar
的后退图标,以便用户可以导航到上一个片段并处理 android.R.id.home 的回调在同一片段内或 mainActivity.
您已将 Fragment
添加到返回堆栈并在片段管理器中添加 listener
getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
} else {
//show hamburger
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
toggle.syncState();
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawerLayout.openDrawer(GravityCompat.START);
}
});
}
}
});