hnvasa
hnvasa

Reputation: 860

How to navigate between fragments?

I am new to Android Fragments. I have 2 different fragments and want to navigate from one fragment to another using buttons. For example, in fragmentA when i press a button, i go to fragmentB and vise verse.

Here are my simple codes:

FragmentA.java

public class FragmentA extends Fragment {

    public FragmentA(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_a, container, false);

        return rootView;
    }

}

fragmenta.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="670dp"
    android:gravity="top"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/txtLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="15dp"
        android:text="Fragment 1"
        android:textStyle="bold"
        android:textSize="22dp" />
</LinearLayout>

FragmentB.java

public class FragmentB extends Fragment {

    public FragmentB(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_b, container, false);

        return rootView;
    }

}

fragmentb.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="670dp"
    android:gravity="top"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/txtLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="15dp"
        android:text="Fragment 2"
        android:textStyle="bold"
        android:textSize="22dp" />
</LinearLayout>

I need codes (both java and xml) for buttons. Help from scratch would be appreciated. Thanks in advance!!

Upvotes: 0

Views: 6796

Answers (2)

Anderson K
Anderson K

Reputation: 5505

Code in Activity

 public class MyActivity extends FragmentActivity implements OnListenerChangeFragment {

        FragmentA mFragmentA;
        FragmentB mFragmentB;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); 

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            // transaction.replace(R.id.fragment_container, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
        }

        @Override
        public void onShowFragmenA() {
             //replace mFragmentB by mFragmentA

        }

        @Override
        public void onShowFragmenB() {
             //replace mFragmentA by mFragmentA
        }
}  

//Code in Fragments

public class FragmentA extends Fragment {

        private OnListenerChangeFragment mCallback;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

                Button mButton = new Button(getActivity());

                mButton.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                mCallback.onShowFragmenB();
                        }
                });


                return mButton;
        }

        @Override
        public void onAttach(Activity activity) {
                super.onAttach(activity);

                try {
                        mCallback = (OnListenerChangeFragment) activity;
                } catch (ClassCastException e) {
                        throw new ClassCastException(activity.toString()+ " must implement OnListenerChangeFragment");
                }
        }
}

public class FragmentB extends Fragment {

        private OnListenerChangeFragment mCallback;


        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) {

                Button mButton = new Button(getActivity());

                mButton.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                mCallback.onShowFragmenA();
                        }
                });

                return mButton;
        }


        @Override
        public void onAttach(Activity activity) {
                super.onAttach(activity);

                try {
                        mCallback = (OnListenerChangeFragment) activity;
                } catch (ClassCastException e) {
                        throw new ClassCastException(activity.toString()+ " must implement OnListenerChangeFragment");
                }
        }
}

Upvotes: 0

Developer
Developer

Reputation: 6350

Check This Tutorial and Below Code for refrence

Fragment1.java

    public class Fragment1 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment1, container, false);
    }

    public void onClick(View view) {
        Fragment2 fragment2 = new Fragment2();
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.fragment1, fragment2);
        fragmentTransaction.commit();
    }

    }

Fragment2.java

public class Fragment2 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment2, container, false);  
        }
}

Upvotes: 2

Related Questions