如何在按钮片段更改上更改抽屉选择的项目?

时间:2019-06-27 13:11:34

标签: java android android-fragments navigation-drawer

我想知道当我用按钮更改碎片时如何在导航抽屉中更改所选项目。

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

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

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

            }
        });
}

1 个答案:

答案 0 :(得分:1)

navigationView.getMenu().getItem(position).setChecked(true);
  • 在这里您的NavigationView必须以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);
    
            }
        });
    

    }