SlideShare a Scribd company logo
Activity:
An activity represents a single screen with a user interface. For example, an email application might
have one activity that shows a list of new emails, another activity to compose an email, and another
activity for reading emails. If an application has more than one activity, then one of them should be
marked as the activity that is presented when the application is launched.
If you have worked with C, C++ or Java programming language then you must have seen that your
program starts from main() function. Very similar way, Android system initiates its program with in
an Activity starting with a call on onCreate() callback method. There is a sequence of callback
methods that start up an activity and a sequence of callback methods that tear down an activity as
shown in the below Activity lifecycle diagram:
The Activity class defines the following callbacks i.e. events. You don't need to implement all the
callbacks methods. However, it's important that you understand each one and implement those
that ensure your app behaves the way users expect.
Callback Description
onCreate() This is the first callback and called when the activity is first created.
onStart() This callback is called when the activity becomes visible to the user.
onResume() This is called when the user starts interacting with the application.
onPause()
The paused activity does not receive user input and cannot execute any
code and called when the current activity is being paused and the previous
activity is being resumed.
onStop() This callback is called when the activity is no longer visible.
onDestroy() This callback is called before the activity is destroyed by the system.
onRestart() This callback is called when the activity restarts after stopping it.
Example
This example will take you through simple steps to show Android application activity life cycle.
Follow the following steps to modify the Android application we created in Hello World Example
chapter:
Step Description
1
You will use Eclipse IDE to create an Android application and name it as HelloWorld under a
package com.example.helloworld as explained in the Hello World Example chapter.
2
Modify main activity file MainActivity.java as explained below. Keep rest of the files
unchanged.
3
Run the application to launch Android emulator and verify the result of the changes done in
the aplication.
Following is the content of the modified main activity file
src/com.example.helloworld/MainActivity.java. This fileincludes each of the fundamental lifecycle
methods. The Log.d() method has been used to generate log messages:
package com.example.helloworld;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
public class MainActivity extends Activity {
String msg = "Android : ";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(msg, "The onCreate() event");
}
/** Called when the activity is about to become visible. */
@Override
protected void onStart() {
super.onStart();
Log.d(msg, "The onStart() event");
}
/** Called when the activity has become visible. */
@Override
protected void onResume() {
super.onResume();
Log.d(msg, "The onResume() event");
}
/** Called when another activity is taking focus. */
@Override
protected void onPause() {
super.onPause();
Log.d(msg, "The onPause() event");
}
/** Called when the activity is no longer visible. */
@Override
protected void onStop() {
super.onStop();
Log.d(msg, "The onStop() event");
}
/** Called just before the activity is destroyed. */
@Override
public void onDestroy() {
super.onDestroy();
Log.d(msg, "The onDestroy() event");
}
}
An activity class loads all the UI component using the XML file available in res/layout folder of the
project. Following statement loads UI components from res/layout/activity_main.xml file:
setContentView(R.layout.activity_main);
An application can have one or more activities without any restrictions. Every activity you define for
your application must be declared in your AndroidManifest.xml file and the main activity for your
app must be declared in the manifest with an <intent-filter> that includes the MAIN action and
LAUNCHER category as follows:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
If either the MAIN action or LAUNCHER category are not declared for one of your activities, then
your app icon will not appear in the Home screen's list of apps.
Let's try to run our modified Hello World! application we just modified. I assume you had created
your AVD while doing environment setup. To run the app from Eclipse, open one of your project's
activity files and click Run icon from the toolbar. Eclipse installs the app on your AVD and starts it
and if everything is fine with your setup and application, it will display Emulator window and you
should see following log messages in LogCat window in Eclipse IDE:
07-19 15:00:43.405: D/Android :(866): The onCreate() event
07-19 15:00:43.405: D/Android :(866): The onStart() event
07-19 15:00:43.415: D/Android :(866): The onResume() event
Let us try to click Red button on the Android emulator and it will generate following events
messages in LogCat window in Eclipse IDE:
07-19 15:01:10.995: D/Android :(866): The onPause() event
07-19 15:01:12.705: D/Android :(866): The onStop() event
Let us again try to click Menu button on the Android emulator and it will generate following events
messages in LogCat window in Eclipse IDE:
07-19 15:01:13.995: D/Android :(866): The onStart() event
07-19 15:01:14.705: D/Android :(866): The onResume() event
Next, let us again try to click Back button on the Android emulator and it will generate following
events messages in LogCat window in Eclipse IDE and this completes the Acitivity Life Cycle for an
Android Application.
07-19 15:33:15.687: D/Android :(992): The onPause() event
07-19 15:33:15.525: D/Android :(992): The onStop() event
07-19 15:33:15.525: D/Android :(992): The onDestroy() even
Useful links:
http://developer.android.com/training/basics/activity-lifecycle/index.html
Fragment:
A Fragment is a piece of an application's user interface or behavior that can be placed in an Activity
which enable more modular activity design. It will not be wrong if we say, a fragment is a kind of
sub-acitivity. Following are important points about fragment:
 A fragment has its own layout and its own behavior with its own lifecycle callbacks.
 You can add or remove fragments in an activity while the activity is running.
 You can combine multiple fragments in a single activity to build a multi-pane UI.
 A fragment can be used in multiple activities.
 Fragment life cycle is closely related to the lifecycle of its host activity which means when
the activity is paused, all the fragments available in the acivity will also be stopped.
 A fragment can implement a behavior that has no user interface component.
 Fragments were added to the Android API in Honeycomb version of Android which API
version 11.
You create fragments by extending Fragment class and You can insert a fragment into your activity
layout by declaring the fragment in the activity's layout file, as a <fragment> element.
Prior to fragment introduction, we had a limitation because we can show only a single activity on the
screen at one given point in time. So we were not able to divide device screen and control different
parts separately. But with the introduction of fragment we got more flexibility and removed the
limitation of having a single activity on the screen at a time. Now we can have a single acitivity but
each acitivity can comprise of multiple fragments which will have their own layout, events and
complete lifecycle.
Following is a typical example of how two UI modules defined by fragments can be combined into
one activity for a tablet design, but separated for a handset design.
The application can embed two fragments in Activity A, when running on a tablet-sized device.
However, on a handset-sized screen, there's not enough room for both fragments, so Activity A
includes only the fragment for the list of articles, and when the user selects an article, it starts
Activity B, which includes the second fragment to read the article.
Fragment Life Cycle
Android fragments have their own life cycle very similar to an android activity. This section briefs
different stages of its life cycle.
Phase I: When a fragment gets created, it goes
through the following states:
 onAttach()
 onCreate()
 onCreateView()
 onActivityCreated()
Phase II: When the fragment becomes visible, it
goes through these states:
 onStart()
 onResume()
Phase III: When the fragment goes into the
background mode, it goes through these states:
 onPaused()
 onStop()
Phase IV: When the fragment is destroyed, it
goes through the following states:
 onPaused()
 onStop()
 onDestroyView()
 onDestroy()
 onDetach()
How to use Fragments?
This involves number of simple steps to create Fragments.
 First of all decide how many fragments you want to use in an activity. For example let's we
want to use two fragments to handle landscape and portrait modes of the device.
 Next based on number of fragments, create classes which will extend the Fragment class. The
Fragment class has above mentioned callback functions. You can override any of the
functions based on your requirements.
 Corresponding to each fragment, you will need to create layout files in XML file. These files
will have layout for the defined fragments.
 Finally modify activity file to define the actual logic of replacing fragments based on your
requirement.
Here is the list of important methods which you can to override in your fragment class:
 onCreate() The system calls this when creating the fragment. You should initialize essential
components of the fragment that you want to retain when the fragment is paused or stopped,
then resumed.
 onCreateView() The system calls this callback when it's time for the fragment to draw its
user interface for the first time. To draw a UI for your fragment, you must return a View
component from this method that is the root of your fragment's layout. You can return null if
the fragment does not provide a UI.
 onPause() The system calls this method as the first indication that the user is leaving the
fragment. This is usually where you should commit any changes that should be persisted
beyond the current user session.
Example
This example will explain you how to create your own Fragments. Here we will create two
fragments and one of them will be used when device is in landscape mode and another fragment will
be used in case of portrait mode. So let's follow the following steps to similar to what we followed
while creating Hello World Example:
Step Description
1
You will use Eclipse IDEtocreate an Androidapplicationandname itas MyFragments undera
package com.example.myfragments,withblankActivity.
2
Modifymainactivityfile MainActivity.java asshownbelow inthe code.Here we will checkorientation
of the device andaccordinglywe will switchbetweendifferentfragments.
3
Create a two javafiles PM_Fragment.java andLM_Fragement.java underthe package
com.example.myfragmentstodefine yourfragmentsandassociatedmethods.
4
Create layoutsfiles res/layout/lm_fragment.xmlandres/layout/pm_fragment.xmlanddefine your
layoutsforboththe fragments.
5 Modifythe detaultcontentof res/layout/activity_main.xmlfile toinclude boththe fragments.
6 Define requiredconstantsin res/values/strings.xmlfile
7
Run the applicationtolaunchAndroidemulatorandverifythe resultof the changesdone inthe
aplication.
Following is the content of the modified main activity file
src/com.example.mycontentprovider/MainActivity.java:
package com.example.myfragments;
import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.view.WindowManager;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Configuration config = getResources().getConfiguration();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction =
fragmentManager.beginTransaction();
/**
* Check the device orientation and act accordingly
*/
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
/**
* Landscape mode of the device
*/
LM_Fragment ls_fragment = new LM_Fragment();
fragmentTransaction.replace(android.R.id.content, ls_fragment);
}else{
/**
* Portrait mode of the device
*/
PM_Fragment pm_fragment = new PM_Fragment();
fragmentTransaction.replace(android.R.id.content, pm_fragment);
}
fragmentTransaction.commit();
}
}
Create two fragment files LM_Fragement.java and PM_Fragment.java under
com.example.myfragments package.
Following is the content of LM_Fragement.java file:
package com.example.myfragments;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class LM_Fragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
/**
* Inflate the layout for this fragment
*/
return inflater.inflate(
R.layout.lm_fragment, container, false);
}
}
Following is the content of PM_Fragement.java file:
package com.example.myfragments;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class PM_Fragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
/**
* Inflate the layout for this fragment
*/
return inflater.inflate(
R.layout.pm_fragment, container, false);
}
}
Create two layout files lm_fragement.xml and pm_fragment.xml under res/layout directory.
Following is the content of lm_fragement.xml file:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#7bae16">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/landscape_message"
android:textColor="#000000"
android:textSize="20px" />
<!-- More GUI components go here -->
</LinearLayout>
Following is the content of pm_fragment.xml file:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#666666">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/portrait_message"
android:textColor="#000000"
android:textSize="20px" />
<!-- More GUI components go here -->
</LinearLayout>
Following will be the content of res/layout/activity_main.xml file which includes your fragments:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<fragment
android:name="com.example.fragments"
android:id="@+id/lm_fragment"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment
android:name="com.example.fragments"
android:id="@+id/pm_fragment"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
Make sure you have following content of res/values/strings.xml file:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">MyFragments</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="landscape_message">This is Landscape mode fragment
</string>
<string name="portrait_message">This is Portrait mode fragment
</string>
</resources>
Let's try to run our modified MyFragments application we just created. To run the app from Eclipse,
open one of your project's activity files and click Run icon from the toolbar. Eclipse installs the app
on your AVD and starts it and if everything is fine with your setup and application, it will display
Emulator window where you will click on Menu button to see the following window. Be patience
because it may take sometime based on your computer speed:
To change the mode of the emulator screen, let's do the following:
 fn+control+F11 on Mac to change the landscape to portrait and vice versa.
 ctrl+F11 on Windows.
 ctrl+F11 on Linux.
This way you can use same activity but different GUIs through different fragments. You can use
different type of GUI components for different GUIs based on your requirements.

More Related Content

PDF
Android development - Activities, Views & Intents
Lope Emano
 
PPTX
04 activities - Android
Wingston
 
PPTX
Android
Pranav Ashok
 
ODP
Ppt 2 android_basics
Headerlabs Infotech Pvt. Ltd.
 
PDF
Android Basic Components
Jussi Pohjolainen
 
PPT
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
JAX London
 
PPT
Android tutorial (2)
Kumar
 
PDF
Android Components
Aatul Palandurkar
 
Android development - Activities, Views & Intents
Lope Emano
 
04 activities - Android
Wingston
 
Android
Pranav Ashok
 
Ppt 2 android_basics
Headerlabs Infotech Pvt. Ltd.
 
Android Basic Components
Jussi Pohjolainen
 
Android | Android Activity Launch Modes and Tasks | Gonçalo Silva
JAX London
 
Android tutorial (2)
Kumar
 
Android Components
Aatul Palandurkar
 

What's hot (18)

PPT
Android Basics
Krushnakant Solanki
 
PDF
Android studio
Andri Yabu
 
PPTX
Android apps development
Raman Pandey
 
PDF
Mad textbook 63-116
PrathishGM
 
PPTX
Android Life Cycle
mssaman
 
PDF
Android UI Fundamentals part 1
Marcos Paulo Souza Damasceno
 
DOC
Day 4: Activity lifecycle
Ahsanul Karim
 
PPTX
Google Plus SignIn : l'Authentification Google
Mathias Seguy
 
PPTX
Session #8 adding magic to your app
Vitali Pekelis
 
PPT
Day 4: Android: Getting Active through Activities
Ahsanul Karim
 
PPTX
Advance UIAutomator : Documentaion
Raman Gowda Hullur
 
PDF
Android Components & Manifest
ma-polimi
 
PDF
Lab1-android
Lilia Sfaxi
 
ODP
Android App Development - 02 Activity and intent
Diego Grancini
 
DOCX
Using intents in android
Oum Saokosal
 
PPTX
Android Development project
Minhaj Kazi
 
PDF
Testing iOS10 Apps with Appium and its new XCUITest backend
Testplus GmbH
 
PPTX
iOS Automation: XCUITest + Gherkin
Kenneth Poon
 
Android Basics
Krushnakant Solanki
 
Android studio
Andri Yabu
 
Android apps development
Raman Pandey
 
Mad textbook 63-116
PrathishGM
 
Android Life Cycle
mssaman
 
Android UI Fundamentals part 1
Marcos Paulo Souza Damasceno
 
Day 4: Activity lifecycle
Ahsanul Karim
 
Google Plus SignIn : l'Authentification Google
Mathias Seguy
 
Session #8 adding magic to your app
Vitali Pekelis
 
Day 4: Android: Getting Active through Activities
Ahsanul Karim
 
Advance UIAutomator : Documentaion
Raman Gowda Hullur
 
Android Components & Manifest
ma-polimi
 
Lab1-android
Lilia Sfaxi
 
Android App Development - 02 Activity and intent
Diego Grancini
 
Using intents in android
Oum Saokosal
 
Android Development project
Minhaj Kazi
 
Testing iOS10 Apps with Appium and its new XCUITest backend
Testplus GmbH
 
iOS Automation: XCUITest + Gherkin
Kenneth Poon
 
Ad

Similar to Activity (20)

PDF
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
PPTX
fragments-activity.pptx
SriKGangadharRaoAssi
 
PPTX
Unit-1.2 Android-Activities, Fragments, and Intents (1).pptx
vikasR48
 
PPTX
Android apps development
Monir Zzaman
 
DOCX
Android Application Components with Implementation & Examples
Dr. Chandrakant Divate
 
PPTX
Unit 5 Activity and Activity Life Cycle.pptx
ShantanuDharekar
 
PDF
Android activities & views
ma-polimi
 
PPT
Android
Natasha Ramírez
 
PPTX
Lecture #4 activities &amp; fragments
Vitali Pekelis
 
PPTX
Dori waldman android _course
Dori Waldman
 
PDF
Android development Training Programme Day 2
DHIRAJ PRAVIN
 
PPTX
Android Component.pptx
Qwerty140857
 
PDF
Android activity
Krazy Koder
 
PDF
Android activity
Krazy Koder
 
ODP
Anatomy of android application
Nikunj Dhameliya
 
PPTX
Dori waldman android _course_2
Dori Waldman
 
PPTX
App Fundamentals and Activity life cycle.pptx
ridzah12
 
PPTX
Activities, Fragments, and Events
Henry Osborne
 
PPTX
Unit2
DevaKumari Vijay
 
PPTX
Fragment
nationalmobileapps
 
MAD Unit - 2 Activity and Fragment Management in Android (Diploma IT)
JappanMavani
 
fragments-activity.pptx
SriKGangadharRaoAssi
 
Unit-1.2 Android-Activities, Fragments, and Intents (1).pptx
vikasR48
 
Android apps development
Monir Zzaman
 
Android Application Components with Implementation & Examples
Dr. Chandrakant Divate
 
Unit 5 Activity and Activity Life Cycle.pptx
ShantanuDharekar
 
Android activities & views
ma-polimi
 
Lecture #4 activities &amp; fragments
Vitali Pekelis
 
Dori waldman android _course
Dori Waldman
 
Android development Training Programme Day 2
DHIRAJ PRAVIN
 
Android Component.pptx
Qwerty140857
 
Android activity
Krazy Koder
 
Android activity
Krazy Koder
 
Anatomy of android application
Nikunj Dhameliya
 
Dori waldman android _course_2
Dori Waldman
 
App Fundamentals and Activity life cycle.pptx
ridzah12
 
Activities, Fragments, and Events
Henry Osborne
 
Ad

More from roopa_slide (6)

PDF
Class 1-course introduction
roopa_slide
 
DOCX
Activity
roopa_slide
 
RTF
Roopa 21:48
roopa_slide
 
TXT
Impquest2
roopa_slide
 
PPTX
roopa doc 13:54
roopa_slide
 
TXT
Roopa Document 3
roopa_slide
 
Class 1-course introduction
roopa_slide
 
Activity
roopa_slide
 
Roopa 21:48
roopa_slide
 
Impquest2
roopa_slide
 
roopa doc 13:54
roopa_slide
 
Roopa Document 3
roopa_slide
 

Recently uploaded (20)

PPTX
Executive Branch of the Philippine Government
SaraCapague
 
PDF
From navigating subsidies to setting up industries.
ANGC Group India Private Limited
 
PPTX
Parliament_of_India_Presentationisakwaysgood.pptx
rawatsharukh19
 
PPTX
AIHA Heat Stress App Version 2 Presentation.pptx
AIHA
 
PPTX
Annual Report 2024-2025 La Jolla Village Merchants Association
La Jolla Village Merchants Assocation
 
PPT
1406185655868-HOER Rules 13.1.11.ppt irtm
DeepakKumar311204
 
PDF
A Personal Guide to the Common Ground Approach in Everyday Life
GAMIP ALC
 
DOCX
DRAFT COMMUNICATION STRATEGY FOR THE NYAMIRA COUNTY GOVERNOR.docx
JoshuaMokaya3
 
PPTX
Egomaniac in OSHA for the OSHA 30 training
chadrickkeller
 
PPTX
学位成绩单修改休斯顿大学毕业证(UH毕业证书)文凭证书原版制作购买毕业证流程
asp9i3c
 
PDF
About The Hindu Society of North Carolin
paragdighe3
 
PPTX
Virtuosity Award presentation for leaders.pptx
jlong12
 
PPTX
ai i military life read it agai ad read it agai
ShwetaBharti31
 
PPTX
National-National Spoil Your Dog Day (1).pptx
recouti384
 
PPTX
k-lakshmi-sri-venkateswara-veterinary-university-india-1.pptx.ghjkkknbgfvbmkk...
seidyimer7
 
PDF
Shree Shakti Seva Kendra – Child Development NGO in Mehsana
shreeshaktisevakendr
 
PPT
lecture_20_anxsacAFAERVedcdvrvVatomy.ppt
BALQISNURAZIZAH1
 
PDF
UK email opt-in changes - what do they mean for charities?
More Onion
 
PDF
Indivisible Upstate SC Members Meeting July 26, 2025
indivisibleupstatesc
 
PPTX
PPT ASKING AND GIVING OPINIONS XI CLASS.pptx
TujuhTujuh2
 
Executive Branch of the Philippine Government
SaraCapague
 
From navigating subsidies to setting up industries.
ANGC Group India Private Limited
 
Parliament_of_India_Presentationisakwaysgood.pptx
rawatsharukh19
 
AIHA Heat Stress App Version 2 Presentation.pptx
AIHA
 
Annual Report 2024-2025 La Jolla Village Merchants Association
La Jolla Village Merchants Assocation
 
1406185655868-HOER Rules 13.1.11.ppt irtm
DeepakKumar311204
 
A Personal Guide to the Common Ground Approach in Everyday Life
GAMIP ALC
 
DRAFT COMMUNICATION STRATEGY FOR THE NYAMIRA COUNTY GOVERNOR.docx
JoshuaMokaya3
 
Egomaniac in OSHA for the OSHA 30 training
chadrickkeller
 
学位成绩单修改休斯顿大学毕业证(UH毕业证书)文凭证书原版制作购买毕业证流程
asp9i3c
 
About The Hindu Society of North Carolin
paragdighe3
 
Virtuosity Award presentation for leaders.pptx
jlong12
 
ai i military life read it agai ad read it agai
ShwetaBharti31
 
National-National Spoil Your Dog Day (1).pptx
recouti384
 
k-lakshmi-sri-venkateswara-veterinary-university-india-1.pptx.ghjkkknbgfvbmkk...
seidyimer7
 
Shree Shakti Seva Kendra – Child Development NGO in Mehsana
shreeshaktisevakendr
 
lecture_20_anxsacAFAERVedcdvrvVatomy.ppt
BALQISNURAZIZAH1
 
UK email opt-in changes - what do they mean for charities?
More Onion
 
Indivisible Upstate SC Members Meeting July 26, 2025
indivisibleupstatesc
 
PPT ASKING AND GIVING OPINIONS XI CLASS.pptx
TujuhTujuh2
 

Activity

  • 1. Activity: An activity represents a single screen with a user interface. For example, an email application might have one activity that shows a list of new emails, another activity to compose an email, and another activity for reading emails. If an application has more than one activity, then one of them should be marked as the activity that is presented when the application is launched. If you have worked with C, C++ or Java programming language then you must have seen that your program starts from main() function. Very similar way, Android system initiates its program with in an Activity starting with a call on onCreate() callback method. There is a sequence of callback methods that start up an activity and a sequence of callback methods that tear down an activity as shown in the below Activity lifecycle diagram: The Activity class defines the following callbacks i.e. events. You don't need to implement all the callbacks methods. However, it's important that you understand each one and implement those that ensure your app behaves the way users expect. Callback Description onCreate() This is the first callback and called when the activity is first created. onStart() This callback is called when the activity becomes visible to the user. onResume() This is called when the user starts interacting with the application. onPause() The paused activity does not receive user input and cannot execute any code and called when the current activity is being paused and the previous activity is being resumed. onStop() This callback is called when the activity is no longer visible. onDestroy() This callback is called before the activity is destroyed by the system. onRestart() This callback is called when the activity restarts after stopping it.
  • 2. Example This example will take you through simple steps to show Android application activity life cycle. Follow the following steps to modify the Android application we created in Hello World Example chapter: Step Description 1 You will use Eclipse IDE to create an Android application and name it as HelloWorld under a package com.example.helloworld as explained in the Hello World Example chapter. 2 Modify main activity file MainActivity.java as explained below. Keep rest of the files unchanged. 3 Run the application to launch Android emulator and verify the result of the changes done in the aplication. Following is the content of the modified main activity file src/com.example.helloworld/MainActivity.java. This fileincludes each of the fundamental lifecycle methods. The Log.d() method has been used to generate log messages: package com.example.helloworld; import android.os.Bundle; import android.app.Activity; import android.util.Log; public class MainActivity extends Activity { String msg = "Android : "; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(msg, "The onCreate() event"); } /** Called when the activity is about to become visible. */ @Override protected void onStart() { super.onStart(); Log.d(msg, "The onStart() event"); } /** Called when the activity has become visible. */ @Override protected void onResume() { super.onResume();
  • 3. Log.d(msg, "The onResume() event"); } /** Called when another activity is taking focus. */ @Override protected void onPause() { super.onPause(); Log.d(msg, "The onPause() event"); } /** Called when the activity is no longer visible. */ @Override protected void onStop() { super.onStop(); Log.d(msg, "The onStop() event"); } /** Called just before the activity is destroyed. */ @Override public void onDestroy() { super.onDestroy(); Log.d(msg, "The onDestroy() event"); } } An activity class loads all the UI component using the XML file available in res/layout folder of the project. Following statement loads UI components from res/layout/activity_main.xml file: setContentView(R.layout.activity_main); An application can have one or more activities without any restrictions. Every activity you define for your application must be declared in your AndroidManifest.xml file and the main activity for your app must be declared in the manifest with an <intent-filter> that includes the MAIN action and LAUNCHER category as follows: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity
  • 4. android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> If either the MAIN action or LAUNCHER category are not declared for one of your activities, then your app icon will not appear in the Home screen's list of apps. Let's try to run our modified Hello World! application we just modified. I assume you had created your AVD while doing environment setup. To run the app from Eclipse, open one of your project's activity files and click Run icon from the toolbar. Eclipse installs the app on your AVD and starts it and if everything is fine with your setup and application, it will display Emulator window and you should see following log messages in LogCat window in Eclipse IDE: 07-19 15:00:43.405: D/Android :(866): The onCreate() event 07-19 15:00:43.405: D/Android :(866): The onStart() event 07-19 15:00:43.415: D/Android :(866): The onResume() event Let us try to click Red button on the Android emulator and it will generate following events messages in LogCat window in Eclipse IDE: 07-19 15:01:10.995: D/Android :(866): The onPause() event 07-19 15:01:12.705: D/Android :(866): The onStop() event Let us again try to click Menu button on the Android emulator and it will generate following events messages in LogCat window in Eclipse IDE: 07-19 15:01:13.995: D/Android :(866): The onStart() event 07-19 15:01:14.705: D/Android :(866): The onResume() event Next, let us again try to click Back button on the Android emulator and it will generate following events messages in LogCat window in Eclipse IDE and this completes the Acitivity Life Cycle for an Android Application. 07-19 15:33:15.687: D/Android :(992): The onPause() event 07-19 15:33:15.525: D/Android :(992): The onStop() event 07-19 15:33:15.525: D/Android :(992): The onDestroy() even Useful links: http://developer.android.com/training/basics/activity-lifecycle/index.html
  • 5. Fragment: A Fragment is a piece of an application's user interface or behavior that can be placed in an Activity which enable more modular activity design. It will not be wrong if we say, a fragment is a kind of sub-acitivity. Following are important points about fragment:  A fragment has its own layout and its own behavior with its own lifecycle callbacks.  You can add or remove fragments in an activity while the activity is running.  You can combine multiple fragments in a single activity to build a multi-pane UI.  A fragment can be used in multiple activities.  Fragment life cycle is closely related to the lifecycle of its host activity which means when the activity is paused, all the fragments available in the acivity will also be stopped.  A fragment can implement a behavior that has no user interface component.  Fragments were added to the Android API in Honeycomb version of Android which API version 11. You create fragments by extending Fragment class and You can insert a fragment into your activity layout by declaring the fragment in the activity's layout file, as a <fragment> element. Prior to fragment introduction, we had a limitation because we can show only a single activity on the screen at one given point in time. So we were not able to divide device screen and control different parts separately. But with the introduction of fragment we got more flexibility and removed the limitation of having a single activity on the screen at a time. Now we can have a single acitivity but each acitivity can comprise of multiple fragments which will have their own layout, events and complete lifecycle. Following is a typical example of how two UI modules defined by fragments can be combined into one activity for a tablet design, but separated for a handset design. The application can embed two fragments in Activity A, when running on a tablet-sized device. However, on a handset-sized screen, there's not enough room for both fragments, so Activity A
  • 6. includes only the fragment for the list of articles, and when the user selects an article, it starts Activity B, which includes the second fragment to read the article. Fragment Life Cycle Android fragments have their own life cycle very similar to an android activity. This section briefs different stages of its life cycle. Phase I: When a fragment gets created, it goes through the following states:  onAttach()  onCreate()  onCreateView()  onActivityCreated() Phase II: When the fragment becomes visible, it goes through these states:  onStart()  onResume() Phase III: When the fragment goes into the background mode, it goes through these states:  onPaused()  onStop() Phase IV: When the fragment is destroyed, it goes through the following states:  onPaused()  onStop()  onDestroyView()  onDestroy()  onDetach() How to use Fragments? This involves number of simple steps to create Fragments.  First of all decide how many fragments you want to use in an activity. For example let's we want to use two fragments to handle landscape and portrait modes of the device.
  • 7.  Next based on number of fragments, create classes which will extend the Fragment class. The Fragment class has above mentioned callback functions. You can override any of the functions based on your requirements.  Corresponding to each fragment, you will need to create layout files in XML file. These files will have layout for the defined fragments.  Finally modify activity file to define the actual logic of replacing fragments based on your requirement. Here is the list of important methods which you can to override in your fragment class:  onCreate() The system calls this when creating the fragment. You should initialize essential components of the fragment that you want to retain when the fragment is paused or stopped, then resumed.  onCreateView() The system calls this callback when it's time for the fragment to draw its user interface for the first time. To draw a UI for your fragment, you must return a View component from this method that is the root of your fragment's layout. You can return null if the fragment does not provide a UI.  onPause() The system calls this method as the first indication that the user is leaving the fragment. This is usually where you should commit any changes that should be persisted beyond the current user session. Example This example will explain you how to create your own Fragments. Here we will create two fragments and one of them will be used when device is in landscape mode and another fragment will be used in case of portrait mode. So let's follow the following steps to similar to what we followed while creating Hello World Example: Step Description 1 You will use Eclipse IDEtocreate an Androidapplicationandname itas MyFragments undera package com.example.myfragments,withblankActivity. 2 Modifymainactivityfile MainActivity.java asshownbelow inthe code.Here we will checkorientation of the device andaccordinglywe will switchbetweendifferentfragments. 3 Create a two javafiles PM_Fragment.java andLM_Fragement.java underthe package com.example.myfragmentstodefine yourfragmentsandassociatedmethods. 4 Create layoutsfiles res/layout/lm_fragment.xmlandres/layout/pm_fragment.xmlanddefine your layoutsforboththe fragments. 5 Modifythe detaultcontentof res/layout/activity_main.xmlfile toinclude boththe fragments. 6 Define requiredconstantsin res/values/strings.xmlfile 7 Run the applicationtolaunchAndroidemulatorandverifythe resultof the changesdone inthe aplication.
  • 8. Following is the content of the modified main activity file src/com.example.mycontentprovider/MainActivity.java: package com.example.myfragments; import android.os.Bundle; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.res.Configuration; import android.view.WindowManager; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Configuration config = getResources().getConfiguration(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); /** * Check the device orientation and act accordingly */ if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) { /** * Landscape mode of the device */ LM_Fragment ls_fragment = new LM_Fragment(); fragmentTransaction.replace(android.R.id.content, ls_fragment); }else{ /** * Portrait mode of the device */ PM_Fragment pm_fragment = new PM_Fragment(); fragmentTransaction.replace(android.R.id.content, pm_fragment); } fragmentTransaction.commit(); } } Create two fragment files LM_Fragement.java and PM_Fragment.java under com.example.myfragments package. Following is the content of LM_Fragement.java file: package com.example.myfragments; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;
  • 9. public class LM_Fragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /** * Inflate the layout for this fragment */ return inflater.inflate( R.layout.lm_fragment, container, false); } } Following is the content of PM_Fragement.java file: package com.example.myfragments; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class PM_Fragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /** * Inflate the layout for this fragment */ return inflater.inflate( R.layout.pm_fragment, container, false); } } Create two layout files lm_fragement.xml and pm_fragment.xml under res/layout directory. Following is the content of lm_fragement.xml file: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#7bae16"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/landscape_message" android:textColor="#000000" android:textSize="20px" /> <!-- More GUI components go here --> </LinearLayout> Following is the content of pm_fragment.xml file:
  • 10. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#666666"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/portrait_message" android:textColor="#000000" android:textSize="20px" /> <!-- More GUI components go here --> </LinearLayout> Following will be the content of res/layout/activity_main.xml file which includes your fragments: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal"> <fragment android:name="com.example.fragments" android:id="@+id/lm_fragment" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <fragment android:name="com.example.fragments" android:id="@+id/pm_fragment" android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent" /> </LinearLayout> Make sure you have following content of res/values/strings.xml file: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">MyFragments</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="landscape_message">This is Landscape mode fragment </string> <string name="portrait_message">This is Portrait mode fragment </string> </resources>
  • 11. Let's try to run our modified MyFragments application we just created. To run the app from Eclipse, open one of your project's activity files and click Run icon from the toolbar. Eclipse installs the app on your AVD and starts it and if everything is fine with your setup and application, it will display Emulator window where you will click on Menu button to see the following window. Be patience because it may take sometime based on your computer speed: To change the mode of the emulator screen, let's do the following:  fn+control+F11 on Mac to change the landscape to portrait and vice versa.  ctrl+F11 on Windows.  ctrl+F11 on Linux. This way you can use same activity but different GUIs through different fragments. You can use different type of GUI components for different GUIs based on your requirements.