SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

La actualidad más candente (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
 

Destacado (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
 

Similar a 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
 

Similar a 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
 

Último

Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 

Último (20)

How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17
 
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
 
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
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptx
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
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
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
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.
 
NO1 Top Black Magic Specialist In Lahore Black magic In Pakistan Kala Ilam Ex...
NO1 Top Black Magic Specialist In Lahore Black magic In Pakistan Kala Ilam Ex...NO1 Top Black Magic Specialist In Lahore Black magic In Pakistan Kala Ilam Ex...
NO1 Top Black Magic Specialist In Lahore Black magic In Pakistan Kala Ilam Ex...
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/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
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdfUnit 3 Emotional Intelligence and Spiritual Intelligence.pdf
Unit 3 Emotional Intelligence and Spiritual Intelligence.pdf
 

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

Notas del editor

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