【问题标题】:How can I change the drawer selected item on button fragment change?如何在按钮片段更改时更改抽屉所选项目?
【发布时间】:2019-06-27 13:11:34
【问题描述】:

我想知道当我使用按钮更改片段时如何更改导航抽屉中的选定项目。

起始片段“主页”具有将当前片段更改为另一个片段的按钮。当片段从“主页”更改为“工作”时,导航抽屉中的选定项目不会分别从主页更改为工作。作为一个初学者并不能帮助我理解我应该如何实施我在网上看到的解决方案,而且我找不到任何关于这个主题的视频教程。如果有人可以为我提供解决方案并说明它的工作原理以及我应该如何使用它,那将非常有帮助。

这是应用打开时首先加载的片段:

public class Home extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.frag_home, container, false);


        ImageButton workButton = (ImageButton) view.findViewById(R.id.work_button);
        ImageButton calendarButton = (ImageButton) view.findViewById(R.id.calendar_button);

        workButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getFragmentManager().beginTransaction().replace(R.id.fragment_container, new Work()).addToBackStack(null).commit();

            }
        });
}

【问题讨论】:

    标签: java android android-fragments navigation-drawer


    【解决方案1】:
    navigationView.getMenu().getItem(position).setChecked(true);
    
    • 您的NavigationView 必须出现在您的活动中,ID 为nav_view
    • 这里的position 表示必须检查/选择抽屉中的项目数。
      您的家庭片段(已编辑):

      public class Home extends Fragment {
      
      @Nullable
      @Override
      public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
          View view = inflater.inflate(R.layout.frag_home, container, false);
      
          ImageButton workButton = (ImageButton) view.findViewById(R.id.work_button);
          ImageButton calendarButton = (ImageButton) view.findViewById(R.id.calendar_button);
      
          workButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  getFragmentManager().beginTransaction().replace(R.id.fragment_container, new Work()).addToBackStack(null).commit
      
                  NavigationView navigationView = getActivity().findViewById(R.id.nav_view);
                  navigationView.getMenu().getItem(position).setChecked(true);
      
              }
          });
      

      }

    【讨论】:

    • 很抱歉提出愚蠢的问题,但我是个初学者。这应该在 MainActivity 还是 Home 片段中?
    • 您说每当在片段内单击按钮时都需要更改。所以在片段中这样做
    • 这是有道理的。但我有 2 个错误,“无法解析符号‘navigationView’”和“无法解析符号‘位置’”
    • 你是否在activity的xml布局中声明了NavigationView?
    • 在 Home Fragment xml 中?我没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多