SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Mobile Application Development
FragmentActivity
1
Introduction
• Creating a dynamic and multi-pane user interface on
Android, need to encapsulate UI components and
activity behaviors into modules that you can swap into
and out of your activities.
• Fragment class can be used to create these modules,
which behaves somewhat like a nested activity that
can define its own layout and manage its own
lifecycle.
– It represents a behavior or a portion of user interface in
an Activity.
2
Introduction
• Developer can combine multiple fragments in a single
activity to build a multi-pane UI and reuse a fragment
in multiple activities.
– Fragment can be considered as a modular section of an
activity, which has its own lifecycle, receives its own
input events
– Fragment can be added or removed while the activity is
running
– Fragment introduced primarily to support more
dynamic and flexible UI designs on large screens, such
as tablets.
3
Introduction
4
Fragment Support Library
• The Support Library provides a version of the
Fragment APIs that you can use on Android 1.6 (API
level 4) and higher.
– Adding Support library to project
• Right click-> Android tools -> Add Support Library
– To be sure that you don't accidentally use new APIs on
an older system version, import the Fragment class and
related APIs from the android.support.v4.app package:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
5
Using Fragments
• The main activity must extends the FragmentActivity class
• The main activity’s layout should has a space, ViewGroup,
to display the fragments
– If there is more than one fragment appropriate way must be
used to call these fragments
• The fragment activity must extends the Fragment class
– Also all the other fragment activities too.
• Don’t forget that the fragment activity has its own
lifecycle.
6
Using Fragments
• In the MainActivity, do the following steps:
– Create a FragmentManager “fmgr"
• returned by getSupportFragmentManager()
– Create a FragmentTransaction “ftrans”
• returned by fmgr. beginTransaction();
– Add fragment object to FragmentTransaction
• ftrans.add(R.id.fragContainer, FragObj);
– Commit the FragmentTransaction to start the fragment.
• ftrans.commit();
7
Using Fragments
MainActivity
<LinearLayout …>
<LinearLayout
android:layout_weight="1"
android:layout_width="0dp">
<Button
android:id="@+id/btnFrag00"
android:text="Frag 00"
android:onClick="selectFragment"
/>
</LinearLayout>
<!-- the fragment container -->
<LinearLayout
android:id="@+id/fragContainer"
android:layout_weight="3"
android:layout_width="0dp"
…>
</LinearLayout>
</LinearLayout>
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fmgr =
getSupportFragmentManager();
FragmentTransaction ftrans =
fmgr.beginTransaction();
StartFragment startFrag = new StartFragment();
ftrans.add(R.id.fragContainer, startFrag);
ftrans.commit();
}
//handling fragments switching by using
//selectFragment method
} 8
Using Fragments
fragmentActivity
<LinearLayout
android:layout_height="…"
android:layout_width="...“
android:orientation="…" >
< TextView
android:id="@+id/txtV"
android:text="Frag 00"
android:onClick="selectFragment"
/>
…
…
</LinearLayout>
public class StartFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState)
{
return inflater.inflate(R.layout.fragment_start,
container, false);
}
} 9
onCreateView() is the only method that
needed in order to get a fragment
running.
Handling fragments switching
public void selectFragment(View v){
Fragment newFrag = new Fragment();
if(v == findViewById(R.id.btnFrag00))
newFrag = new Fragment00();
else if(v == findViewById(R.id.btnFrag01))
newFrag = new Fragment01();
else if(v == findViewById(R.id.btnFrag02))
newFrag = new Fragment02();
else if(v == findViewById(R.id.btnStartFrag))
newFrag = new StartFragment();
//switching the fragment
FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.fragContainer,newFrag);
trans.addToBackStack(null);//used to put the previous fragment in pause mode
trans.commit();
} 10
Using XML fragment attribute
• The XML fragment attribute can be used to represent
the two or more fragments together in an activity.
11
<fragment
android:id="@+id/frag_list"
android:layout_weight="1"
android:layout_height="match_parent"
class="edu.itf.usingfragments.ListFrag"
/>
<fragment
android:id="@+id/frag_details"
android:layout_weight="1"
android:layout_height="match_parent"
class="edu.itf.usingfragments.DetailFrag"
/>
public class ListFrag extends ListFragment {
@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
String[] positions = {"Dean", "ViceDean",
"CS", "IS", "MW" };
setListAdapter(…);
}
@Override
public void onListItemClick(ListView l, View v,
int position, long id) {
String selectedItem = (String)
getListAdapter().getItem(position);
DetailFrag frag = (DetailFrag)
getFragmentManager().
findFragmentById(R.id.frag_details);
if (frag != null && frag.isInLayout()) {
frag.setText(getPerson(selectedItem));
}
}
private String getPerson(String pos) {
if (pos.equals("Dean"))
return "Dr. Tawfiq";
if (pos.equals("ViceDean"))
return "Dr. Ribhi";
if (pos.equals("CS"))
return "Dr. Ashraf";
if (pos.equals("IS"))
return "Mr. Ehab";
if (pos.equals("MW"))
return "Mr. Ramzi";
return "???";
}
12
Assignment
• How to get/pass data from/to the fragment.
13

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (10)

Android UI Testing with uiautomator
Android UI Testing with uiautomatorAndroid UI Testing with uiautomator
Android UI Testing with uiautomator
 
iOSDevCamp 2012 - FilterKit Pitch
iOSDevCamp 2012 - FilterKit PitchiOSDevCamp 2012 - FilterKit Pitch
iOSDevCamp 2012 - FilterKit Pitch
 
Using Dagger in a Clean Architecture project
Using Dagger in a Clean Architecture projectUsing Dagger in a Clean Architecture project
Using Dagger in a Clean Architecture project
 
Dagger2 Intro
Dagger2 IntroDagger2 Intro
Dagger2 Intro
 
[Android] DI in multimodule application
[Android] DI in multimodule application[Android] DI in multimodule application
[Android] DI in multimodule application
 
Reuse features in Android applications
Reuse features in Android applicationsReuse features in Android applications
Reuse features in Android applications
 
UIAutomator
UIAutomatorUIAutomator
UIAutomator
 
Advance UIAutomator : Documentaion
Advance UIAutomator : DocumentaionAdvance UIAutomator : Documentaion
Advance UIAutomator : Documentaion
 
Espresso
EspressoEspresso
Espresso
 
Dependency injection using dagger2
Dependency injection using dagger2Dependency injection using dagger2
Dependency injection using dagger2
 

Andere mochten auch (7)

Curriculum Cc inntegra - Marzo 2011
Curriculum Cc inntegra - Marzo 2011Curriculum Cc inntegra - Marzo 2011
Curriculum Cc inntegra - Marzo 2011
 
Historia De La Compu Mango
Historia De La Compu MangoHistoria De La Compu Mango
Historia De La Compu Mango
 
Resolution On Global Warming Action - Community Christian Church, Tempe, Ariz...
Resolution On Global Warming Action - Community Christian Church, Tempe, Ariz...Resolution On Global Warming Action - Community Christian Church, Tempe, Ariz...
Resolution On Global Warming Action - Community Christian Church, Tempe, Ariz...
 
Day 2, session 9, melissa fach
Day 2, session 9, melissa fachDay 2, session 9, melissa fach
Day 2, session 9, melissa fach
 
5750 dalmagro sandra
5750 dalmagro sandra5750 dalmagro sandra
5750 dalmagro sandra
 
Quick Resource Overview - Green Churches and Earth Care
Quick Resource Overview - Green Churches and Earth Care  Quick Resource Overview - Green Churches and Earth Care
Quick Resource Overview - Green Churches and Earth Care
 
IT Security - Guidelines
IT Security - GuidelinesIT Security - Guidelines
IT Security - Guidelines
 

Ähnlich wie Fragmentation in android

Threads handlers and async task, widgets - day8
Threads   handlers and async task, widgets - day8Threads   handlers and async task, widgets - day8
Threads handlers and async task, widgets - day8
Utkarsh Mankad
 
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
MugiiiReee
 

Ähnlich wie Fragmentation in android (20)

Fragment
Fragment Fragment
Fragment
 
Android design patterns
Android design patternsAndroid design patterns
Android design patterns
 
[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android
 
fragments-activity.pptx
fragments-activity.pptxfragments-activity.pptx
fragments-activity.pptx
 
Lecture #4 activities &amp; fragments
Lecture #4  activities &amp; fragmentsLecture #4  activities &amp; fragments
Lecture #4 activities &amp; fragments
 
Android lifecycle
Android lifecycleAndroid lifecycle
Android lifecycle
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
 
Android
AndroidAndroid
Android
 
Lesson 4
Lesson 4Lesson 4
Lesson 4
 
MD-IV-CH-ppt.ppt
MD-IV-CH-ppt.pptMD-IV-CH-ppt.ppt
MD-IV-CH-ppt.ppt
 
Threads handlers and async task, widgets - day8
Threads   handlers and async task, widgets - day8Threads   handlers and async task, widgets - day8
Threads handlers and async task, widgets - day8
 
Dori waldman android _course
Dori waldman android _courseDori waldman android _course
Dori waldman android _course
 
Fragments In Android
Fragments In AndroidFragments In Android
Fragments In Android
 
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
 
Dori waldman android _course_2
Dori waldman android _course_2Dori waldman android _course_2
Dori waldman android _course_2
 
Integrate Shindig with Joomla
Integrate Shindig with JoomlaIntegrate Shindig with Joomla
Integrate Shindig with Joomla
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
B2. activity and intent
B2. activity and intentB2. activity and intent
B2. activity and intent
 
Tk2323 lecture 6 fragment (new)
Tk2323 lecture 6   fragment (new)Tk2323 lecture 6   fragment (new)
Tk2323 lecture 6 fragment (new)
 
Android Jumpstart Jfokus
Android Jumpstart JfokusAndroid Jumpstart Jfokus
Android Jumpstart Jfokus
 

Kürzlich hochgeladen

Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
KarakKing
 

Kürzlich hochgeladen (20)

Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
REMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxREMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptx
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 

Fragmentation in android

  • 2. Introduction • Creating a dynamic and multi-pane user interface on Android, need to encapsulate UI components and activity behaviors into modules that you can swap into and out of your activities. • Fragment class can be used to create these modules, which behaves somewhat like a nested activity that can define its own layout and manage its own lifecycle. – It represents a behavior or a portion of user interface in an Activity. 2
  • 3. Introduction • Developer can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. – Fragment can be considered as a modular section of an activity, which has its own lifecycle, receives its own input events – Fragment can be added or removed while the activity is running – Fragment introduced primarily to support more dynamic and flexible UI designs on large screens, such as tablets. 3
  • 5. Fragment Support Library • The Support Library provides a version of the Fragment APIs that you can use on Android 1.6 (API level 4) and higher. – Adding Support library to project • Right click-> Android tools -> Add Support Library – To be sure that you don't accidentally use new APIs on an older system version, import the Fragment class and related APIs from the android.support.v4.app package: import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; 5
  • 6. Using Fragments • The main activity must extends the FragmentActivity class • The main activity’s layout should has a space, ViewGroup, to display the fragments – If there is more than one fragment appropriate way must be used to call these fragments • The fragment activity must extends the Fragment class – Also all the other fragment activities too. • Don’t forget that the fragment activity has its own lifecycle. 6
  • 7. Using Fragments • In the MainActivity, do the following steps: – Create a FragmentManager “fmgr" • returned by getSupportFragmentManager() – Create a FragmentTransaction “ftrans” • returned by fmgr. beginTransaction(); – Add fragment object to FragmentTransaction • ftrans.add(R.id.fragContainer, FragObj); – Commit the FragmentTransaction to start the fragment. • ftrans.commit(); 7
  • 8. Using Fragments MainActivity <LinearLayout …> <LinearLayout android:layout_weight="1" android:layout_width="0dp"> <Button android:id="@+id/btnFrag00" android:text="Frag 00" android:onClick="selectFragment" /> </LinearLayout> <!-- the fragment container --> <LinearLayout android:id="@+id/fragContainer" android:layout_weight="3" android:layout_width="0dp" …> </LinearLayout> </LinearLayout> public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fmgr = getSupportFragmentManager(); FragmentTransaction ftrans = fmgr.beginTransaction(); StartFragment startFrag = new StartFragment(); ftrans.add(R.id.fragContainer, startFrag); ftrans.commit(); } //handling fragments switching by using //selectFragment method } 8
  • 9. Using Fragments fragmentActivity <LinearLayout android:layout_height="…" android:layout_width="...“ android:orientation="…" > < TextView android:id="@+id/txtV" android:text="Frag 00" android:onClick="selectFragment" /> … … </LinearLayout> public class StartFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_start, container, false); } } 9 onCreateView() is the only method that needed in order to get a fragment running.
  • 10. Handling fragments switching public void selectFragment(View v){ Fragment newFrag = new Fragment(); if(v == findViewById(R.id.btnFrag00)) newFrag = new Fragment00(); else if(v == findViewById(R.id.btnFrag01)) newFrag = new Fragment01(); else if(v == findViewById(R.id.btnFrag02)) newFrag = new Fragment02(); else if(v == findViewById(R.id.btnStartFrag)) newFrag = new StartFragment(); //switching the fragment FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); trans.replace(R.id.fragContainer,newFrag); trans.addToBackStack(null);//used to put the previous fragment in pause mode trans.commit(); } 10
  • 11. Using XML fragment attribute • The XML fragment attribute can be used to represent the two or more fragments together in an activity. 11 <fragment android:id="@+id/frag_list" android:layout_weight="1" android:layout_height="match_parent" class="edu.itf.usingfragments.ListFrag" /> <fragment android:id="@+id/frag_details" android:layout_weight="1" android:layout_height="match_parent" class="edu.itf.usingfragments.DetailFrag" />
  • 12. public class ListFrag extends ListFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] positions = {"Dean", "ViceDean", "CS", "IS", "MW" }; setListAdapter(…); } @Override public void onListItemClick(ListView l, View v, int position, long id) { String selectedItem = (String) getListAdapter().getItem(position); DetailFrag frag = (DetailFrag) getFragmentManager(). findFragmentById(R.id.frag_details); if (frag != null && frag.isInLayout()) { frag.setText(getPerson(selectedItem)); } } private String getPerson(String pos) { if (pos.equals("Dean")) return "Dr. Tawfiq"; if (pos.equals("ViceDean")) return "Dr. Ribhi"; if (pos.equals("CS")) return "Dr. Ashraf"; if (pos.equals("IS")) return "Mr. Ehab"; if (pos.equals("MW")) return "Mr. Ramzi"; return "???"; } 12
  • 13. Assignment • How to get/pass data from/to the fragment. 13

Hinweis der Redaktion

  1. tablet&apos;s screen is much larger than that of a handset, there&apos;s more room to combine and interchange UI components.