android - 如何在 android 中的 fragment 更改时更改主页按钮?

标签 android

我正在开发一个应用程序,其中有 fragment “A”和 fragment “B”, fragment “A”中有一个抽屉导航。当我切换到 fragment “B”时我想要什么我想要抽屉导航图标变为后退图标。请告诉我该怎么做。

最佳答案

首先:在您的 Activity (持有工具栏和主页按钮的 Activity )中,您需要创建一个 bool 变量(一个标志)来标记主页按钮是三明治菜单还是后退箭头。

public class TheActivity {
  private boolean backButtonEnabled = false; //starting with the menu icon 
  ...
}

第二:在您的 Activity(持有工具栏和主页按钮的 Activity )中,您需要创建一个方法 enableBackButton(boolean enable) 来将工具栏更改为主页如果启用为真,则向后箭头添加图标;如果启用为假,则为三明治菜单,并设置相应的 bool 标志。

public class TheActivity {
  ...
  public void enableBackButton(boolean enable) {
    this.backButtonEnabled = enable;
    if(enable) {
      toolbar.setNavigationIcon(backIcon);
    } else {
      toolbar.setNavigationIcon(sandwichIcon);
    }
  }
}

第三:在 fragment B(如果可能的话,在其他 fragment 中)你应该在到达 时调用 getActivity().enableBackButton(true/false) onCreateView()onDestroyView()。此时,如果您运行该应用,您将能够更改 fragment 并看到主页按钮在没有操作集的情况下发生变化。

public class FragmentB {

  @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
    ((TheActivity)getActivity().enableBackButton(true);
    ...
  }

  @Override
  public void onDestroyView() {
    ((TheActivity)getActivity().enableBackButton(false);
    super.onDestroyView();
  }
}

最后:您需要根据您在按钮时设置的标志 backButtonEnabled 处理 onOptionsItemSelected(MenuItem item) 中的主页按钮点击改变了。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()){
    case android.R.id.home: {
      if(backButtonEnabled) actionBack(); //desired back action
      else actionSandwich(); //open drawer
      break;
    }
  }
  return super.onOptionsItemSelected(item);
}

希望这对您有所帮助并对您的应用有所帮助! 问候!

关于android - 如何在 android 中的 fragment 更改时更改主页按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37342445/

相关文章:

android - 找不到资源样式/LaunchTheme

android - 将 WiFi 设置共享为 WPA2 Enterprise 的 QR 码

android - 导入时自动附加源

android - 如何保持 Button Background Drawable 的纵横比

java - 相机拍的照片越来越模糊

android - 检查我的应用程序是否可以显示通知

android - 我在Android中收到NoClassFoundError

java - 表不包含外键列

android - 添加聊天和 VOIP 通话功能?

Android:生成模拟 Intent 并从中返回一些 Intent 数据