Новый фрагмент на кнопке нажмите на другой фрагмент?

может ли кто-нибудь указать мне правильное направление и сказать, что я делаю неправильно?

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

public class FragmentName extends Fragment {

    public FragmentName() {
        // Required empty public constructor

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.fragment_name, container, false);

        Button ID = (Button) rootView.findViewById(R.id.buttonID);
        ID.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                FragmentName NAME = new FragmentName();
                fragmentTransaction.replace(R.id.main_container, NAME);
                fragmentTransaction.commit();
            }
        });
        return rootView;
    }
}

1 ответ

  1. Я думаю, что вы не инициализируете FragmentManager. Без FragmentManager невозможно заменить,обновить, создать какой-либо фрагмент. Beacuse it is responsible replace or deleting any fragment. Надеюсь, это поможет.

    public class FragmentName extends Fragment {
    
    public FragmentName() {
        // Required empty public constructor
    
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.fragment_name, container, false);
    
        Button ID = (Button) rootView.findViewById(R.id.buttonID);
        ID.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            FragmentName NAME = new FragmentName();
          fragmentTransaction.replace(R.id.main_container, NAME);
            fragmentTransaction.commit();
    
            }
        });
        return rootView;
      }
    }