Как я могу изменить выбранный ящик на смене фрагмента кнопки? - PullRequest
0 голосов
/ 27 июня 2019

Я хотел бы знать, как я могу изменить выбранный элемент в ящике навигации, когда я изменяю фрагменты с помощью кнопки.

Начальный фрагмент «Домой» имеет кнопки, которые заменяют текущий фрагмент на другой. Когда фрагмент изменяется с «Домашнего» на «Рабочий», выбранный элемент в блоке навигации не изменяется соответственно с Домашнего на Рабочий. Будучи новичком, не помогает мне понять, как я должен реализовывать решения, которые я видел в Интернете, плюс я не могу найти какие-либо видеоуроки по этой теме. Если бы кто-то мог предоставить мне решение и описание того, как оно работает и как мне его использовать, было бы очень полезно.

Это фрагмент, который загружается первым при открытии приложения:

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 Ответ

1 голос
/ 27 июня 2019
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);
    
            }
        });
    

    }

...