0% found this document useful (0 votes)
21 views19 pages

Fragments

Fragments allow an activity to be divided into modular sections. Fragments can be added to activities dynamically at runtime. Communication between fragments and activities can occur through interfaces. The back stack enables fragments to respond to the back button by allowing navigation to previous fragments.

Uploaded by

gunsupheythere
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views19 pages

Fragments

Fragments allow an activity to be divided into modular sections. Fragments can be added to activities dynamically at runtime. Communication between fragments and activities can occur through interfaces. The back stack enables fragments to respond to the back button by allowing navigation to previous fragments.

Uploaded by

gunsupheythere
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

ANDROID FRAGMENTS

Dr.K.Sathiyamurthy Dept. of CSE, PEC


ANDROID FRAGMENTS
❑ Fragments are found inside activity
❑ One Activity can contain multiple Fragments

act_main.xml

Fragment A
Fragment A – Add
Fragment B - Add

Fragment B

Dr.K.Sathiyamurthy Dept. of CSE, PEC


Why Fragments?

❑ Combine several fragments in single activity


❑ Reuse same fragment across several activities
❑ Make better use of larger screen space in Tablets
❑ Support different layouts on portrait and landscape modes

Dr.K.Sathiyamurthy Dept. of CSE, PEC


Adding Fragments to Activity

❑ Two Approaches
❑ XML (less preferred)
❑ Java / Programmatically (More Preferred)

Dr.K.Sathiyamurthy Dept. of CSE, PEC


1. Steps to create Fragment by XML
❑ Create a subclass of Fragment
❑ HelloFragment.java
❑ Create a layout for fragment
❑ fragment hello.xml
❑ Link layout with Fagment subclass
❑ override onCreateView()
❑ Place the Fragment inside an Activity
❑ <fragment> inside activity_main.xml
Dr.K.Sathiyamurthy Dept. of CSE, PEC
Fragment Manager

➢ Interface to interact with fragment objects


inside the Activity
➢ Handles all Fragments inside one activity
FRAGMENT A
FRAGMENT A

FRAGMENT C Fragment
Manager FRAGMENT C
FRAGMENT D (interface)
FRAGMENT D
FRAGMENT E
FRAGMENT E

Dr.K.Sathiyamurthy Dept. of CSE, PEC


Fragment Transaction
➢ Fragment Transaction takes place
Fragment A – Add
FRAGMENT A Remove B - Remove
Fragment C – Add
Fragment D - Add
FRAGMENT C Fragment E – Add

FRAGMENT D ➢ Addition and removal of fragments are known


as fragment Transactions
FRAGMENT E
➢ Takes place in Main Activity with help of
Fragment Transaction class.

➢ Fragment Transaction- API for performing a


set of Fragment operations such as add,
Dr.K.Sathiyamurthy Dept. of CSE, PEC
remove, replace.
2.Steps to create Fragments by Java/Programmatically

❑ Create a subclass of Fragment


❑ HelloFragment.java
❑ Create a layout for fragment
❑ fragment hello.xml
❑ Link layout with Fagment subclass
❑ override onCreateView()
❑ Place the Fragment inside an Activity
❑ Initialize Fragment Manager
❑ Initialize Fragment Transaction
❑ Start add/remove/replace operation
❑ Commit the transaction

Dr.K.Sathiyamurthy Dept. of CSE, PEC


COMMUNICATION
❖ SENDING DATA TO A FRAGMENT FROM ACTIVITY
❖ SENDING DATA TO ACTIVITY FROM FRAGMENT
❖ INTER FRAGMENT COMMUNICATION

Dr.K.Sathiyamurthy Dept. of CSE, PEC


❖ 1. SENDING DATA TO A FRAGMENT FROM ACTIVITY

❑ Using Bundle Object


❑ Stores key/value pair
❑ Using Fragment Object

Dr.K.Sathiyamurthy Dept. of CSE, PEC


2. SENDING DATA TO AN ACTIVITY FROM FRAGMENT
Activity implements
MyListener
@override interface myListener
Public void add(int x, int y){ public void add(int num1,int num2)
//add x +y
//show result
}

Fragment
activity.add(x,y)

Dr.K.Sathiyamurthy Dept. of CSE, PEC


MainActivity extends Activity implements MyListener{ Interface MyListener{
public void add(int num1, int num2);
@override
Public void add(int num1, int num2) { }
int result = num1 + num2;
txvResult.setText(“Result:”+ result);
}
}

Class FragmentA extends Fragment{


Private void sendData{

MyListener listener=(MyListener) getActivity();


Listener.add(23,17);
}

Dr.K.Sathiyamurthy Dept. of CSE, PEC


❖ 3. SENDING DATA FROM ONE FRAGMENT TO ANOTHER

Take input in Fragment A


- Get FirstNumber
- Get SecondNumber
Pass the Data to FragmentB
-Add Two numbers(FirstNumber + SecondNumber)
-Display the Result

Dr.K.Sathiyamurthy Dept. of CSE, PEC


❖ COMMUNICATION BETWEEN TWO FRAGMENTS
Activity implements MyListener
interface myListener
Fragment A public void add(int num1, int num2);
activity.add(x,y)
• Pass data from fragmentA to Activity
@Override • Pass data from Activity to FragmentB
Activity Public void add(int x, int y){ • Add method in FragmentA
fragB.addTwoNumbers(x,y) } • call add method in activity class to call
fragB.addTwoNumbers(x,y)
• It executes addTwoNumbers in
Fragment B
FragmentB
Public void addTwoNumbers(int a, int b) {
int result = a+b; * not communicating directly but creating a
} communication gap between two fragments

Dr.K.Sathiyamurthy Dept. of CSE, PEC


❖ STEPS FOR SENDING DATA FROM ONE FRAGMENT TO ANOTHER

❑ Create an interface MyListener


❑ Define a callback method
❑ Implement MyListener in Activity
❑ Pass data from FragmentA to Activity
❑ activity.add(x,y)
❑ Pass data from Activity to FragmentB
❑ FragB.addTwoNumbers(x,y)

Dr.K.Sathiyamurthy Dept. of CSE, PEC


❖ FRAGMENTS – ENABLING BACK BUTTON

❑ Activity responds to back button


❑ Fragments are not aware of back button
❑ Fragments do not respond to back press

Dr.K.Sathiyamurthy Dept. of CSE, PEC


Solution: Use Back Stack

Second Activity

First Activity

Fragment A Fragment B

❑ If back stack concept is used


❑ Then we can enable back press for fragments
❑ We can switch back to our previous fragment

Dr.K.Sathiyamurthy Dept. of CSE, PEC


Transcation add/pop in back stack

❑ To add a transaction in back stack


❑ addToBackStack(null)
❑ addtoBackStack(String TAG)
❑ pop a transaction in Back Stack
❑ popBackStack()
❑ popBackStack(String TAG, int FLAG)
❑ int FLAG-0, POP_BACK_STACK_INCLUSIVE

Dr.K.Sathiyamurthy Dept. of CSE, PEC


//stacking
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.addToBackStack("TAG");
ft.commit();

//Back to name state


FragmentManager fm = getFragmentManager();
fm.popBackStack("TAG", 0) //Return to the previous state of name
FragmentManager fm = getFragmentManager();
fm.popBackStack("TAG", FragmentManager.POP_BACK_STACK_INCLUSIVE)

Dr.K.Sathiyamurthy Dept. of CSE, PEC

You might also like