gpt4 book ai didi

java - Action Bar、Navigation drawer 和 fragment backstack 管理

转载 作者:行者123 更新时间:2023-11-30 02:49:02 26 4
gpt4 key购买 nike

我正在我的应用程序中实现以下教程:Creating a Navigation Drawer .

我的目标是实现以下行为:

  • 使用一项 Activity
  • 2 个 fragment : fragment A 始终附加。单击按钮时附加 FragmentB
  • 当 FragmentB 可见时,操作栏主页按钮是一个后退箭头,用于从后台堆栈中删除 FragmentB
  • 当 Fragment B 不可见时,操作栏按钮主页按钮显示抽屉布局。

如何实现主页按钮的转换?

谢谢

最佳答案

ActionBar 类中有一些方法可以帮助您:

以下调用会将主页按钮图标设置为“后退”图标。

getActionBar().setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP);

因为MenuItem的 Action 是由onOptionsItemSelected()方法定义的,所以你也必须重写它,并检查你是否点击了主页按钮。实际上,抽屉导航会再次绘制,因此您需要从该方法返回 true 以防止抽屉再次绘制。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getId() == android.R.id.home) {
// do what you want here
return true; // prevent the drawer to draw again;
}
return super.onOptionsItemSelected(item);
}

要将主页按钮恢复为默认“行为”,请使用以下调用:

getActionBar().setDisplayShowHomeEnabled(true);

最后一步是检查您当前的 fragment 是 FragmentA(它将激活抽屉绘制导航 fragment )还是 FragmentB(不会)。您可能想要添加一个全局 boolean 变量来执行它们,并检查导航项的位置。

我在这里包含了一个示例,请查看:

Navigation Drawer example

希望这对您有所帮助。

关于java - Action Bar、Navigation drawer 和 fragment backstack 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24530383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com