Zmiana fragmentów

0

Witam.
Mam mainActivity i dwa fragmenty (LoginFragment & RegisterFragment). Chciałbym zmieniać te fragmenty na buttony, które znajdują się w ich środku. Wiem jak zmienić fragmenty jeśli buttony są w activity, ale jesli sa we fragmentach to nie mam pojęcia. Przeszukałem mase tutoriali oraz stackover ale nic nie mogę znaleźć. Proszę o jakieś naprowadzenie lub jakieś linki. Dziękuję z góry.

2

Cześć. Ja robiłem to przy użyciu interfejsu zdefiniowanego we fragmencie. Jeśli button został naciśnięty, przesyłałem informację o tym do Activity, a Activity podmieniało fragment.

Zdefiniuj sobie we fragmencie interfejs, cós w stylu

private FragmentListener listener;

    public interface FragmentListener{
        void onFragmentItemClick(int position);
    }

następnie po naciśnięciu przycisku we fragmencie odpal ten interfejs

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                listener.onFragmentItemClick(i);
            }
        });

Oczywiście kod który tu podesłałem pochodzi z mojego programu, także zamiast tam przycisku jest jakiś ListView itp, dlatego będziesz musiał tam pozamieniać na button itp itd. Zasada ta sama. W Activity zaimplementuj ten interfejs, zaimplementuj metodę i ustaw odpowiednią akcję po jej wywołaniu, w tym przypadku podmiana fragmentów.

2

Cześć, proponuję zajrzeć do navigation component który ułatwia sporo pracy, przede wszystkim nie trzeba się męczyć z transakcjami i zarządzaniem fragment menadżerem

https://developer.android.com/guide/navigation/navigation-getting-started
i codelab który Ci wszystko wyjaśni
https://codelabs.developers.google.com/codelabs/android-navigation/#0

nawigacja jest później prosta jak konstrukcja cepa , we fragmencie piszesz sobie

findNavController().navigate(R.id.action_loginFragment_to_RegisterFragment)// czy jak tam sobie podefiniujesz transakcje

1 użytkowników online, w tym zalogowanych: 0, gości: 1