如何更改按钮片段更改时的抽屉选定项目?

How can I change the drawer selected item on button fragment change?

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

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

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

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.getMenu().getItem(position).setChecked(true);
  • 此处您的 NavigationView 必须出现在您的 activity 中,ID 为 nav_view
  • 这里的position表示抽屉里的物品数量必须是checked/selected.
    您的主页片段(已编辑):

    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);
    
            }
        });
    

    }