SlideShare uma empresa 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

Mais conteúdo relacionado

Mais procurados

Mais procurados (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
 

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

Semelhante 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
 

Semelhante 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
 

Último (20)

80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 
Plant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.pptxPlant propagation: Sexual and Asexual propapagation.pptx
Plant propagation: Sexual and Asexual propapagation.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
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
Philosophy of china and it's charactistics
Philosophy of china and it's charactisticsPhilosophy of china and it's charactistics
Philosophy of china and it's charactistics
 
latest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answerslatest AZ-104 Exam Questions and Answers
latest AZ-104 Exam Questions and Answers
 
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
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
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
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 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
 
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...
 
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)
 
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
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
OSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsOSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & Systems
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
Basic Intentional Injuries Health Education
Basic Intentional Injuries Health EducationBasic Intentional Injuries Health Education
Basic Intentional Injuries Health Education
 

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 do 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.