android - 按下返回时如何更改片段的标题?
问题描述
我有 3 个片段,主页、菜单和订单,它们可以按bottomnavigtioview
项目加载,并且一旦从主页导航到订单,它们也可以显示标题,然后如果你想从订单返回主页,标题仍然是“订单”
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment;
switch (item.getItemId()) {
case R.id.navigation_home:
toolbar.setTitle(getResources().getString(R.string.title_home));
fragment = new HomeFragment();
loadFragment(fragment);
return true;
case R.id.navigation_menu:
toolbar.setTitle(getResources().getString(R.string.fragment_title_menu));
fragment = new ProductFragment();
loadFragment(fragment);
return true;
case R.id.navigation_orders:
toolbar.setTitle(getResources().getString(R.string.title_orders));
fragment = new OrdersFragment();
loadFragment(fragment);
return true;
}
return false;
}
};
private void loadFragment(Fragment fragment) {
// load fragment
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
@覆盖
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
navigation = findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
// attaching bottom sheet behaviour - hide / show on scroll
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) navigation.getLayoutParams();
layoutParams.setBehavior(new BottomNavigationBehavior());
toolbar.setTitle(getResources().getString(R.string.title_home));
Fragment f = HomeFragment.newInstance();
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame_container, f)
.commit();
}`
我也试过这个,但它不工作
`
fragmentmanger.addOnBackStackChangedListener -> public void onBackStackChanged() {
}`
解决方案
onResume
在每个片段中这样调用它时,它对我有用:
if(getActivity()!=null) {
((MainActivity)getActivity()).setActionBarTitle
(context.getResources().getString(R.string.YOUR_TITLE));
这是中的setActionBarTitle
功能MainActivity
public void setActionBarTitle(String title) {
toolbar.setTitle(title);
}
推荐阅读
- python - 在 X 个收件人之间分配随机值
- javascript - 将半径变化的圆心放置在 div 的拐角处
- sql-server - SQL CASE 如果日期被引入为 YYYY-DD-MM 以将其转换为 YYYY-MM-DD
- php - 使用 CSS 更改 PHP 文件中的文本颜色
- excel - 如果任何列中有值,则将每一行计为 1
- c# - 在基类构造函数中调用抽象方法的替代方法
- php - 未捕获的 PDOException:在 docker 容器中找不到驱动程序
- python - django rest框架检查序列化程序是否收到None对象
- android - 在哪里可以在 Cordova 中编写一些 Android 编码
- windows-10 - ERAM(开源 RAMDisk 驱动程序)中出现 BSOD