Android Application Development E-Book
-
Upload
rron-krasniqi -
Category
Documents
-
view
217 -
download
0
Transcript of Android Application Development E-Book
-
8/17/2019 Android Application Development E-Book
1/84
-
8/17/2019 Android Application Development E-Book
2/84
!"#$% !()(*(
!"#$% !(()&*+,&%"
-./.)%(0.", +,"#-.%" /0 2% !"#$% 3$%/$,44&"/
!"#$% !()(*( )+,-
-
8/17/2019 Android Application Development E-Book
3/84
Information in this document, including URL and other Internet Web site references,
is subject to change without notice. Complying with all applicable copyright laws is the
responsibility of the user. Without limiting the rights under copyright, no part of thisdocument may be reproduced, stored in or introduced into a retrieval system, or
transmitted in any form or by any means (electronic, mechanical, photocopying,
recording, or otherwise), or for any purpose, without the express written permission ofAndroid ATC company.Android ATC company is not responsible for webcasting or any other form of
transmission received from any linked site.
Android ATC company is providing these links to you only as a convenience, and theinclusion of any link does not imply endorsement of Android ATC of the site or the
products contained therein.
Android ATC company may have patents, patent applications, trademarks, copyrights, orother intellectual property rights covering subject matter in this document. Except as
expressly provided in any written license agreement from Android ATC company, the
furnishing of this document does not give you any license to these patents,trademarks, copyrights, or other intellectual property.
This book is available from www.androidatc.com
Copyright © Android ATC 2012
I
-
8/17/2019 Android Application Development E-Book
4/84
Android ATC © 2012 55
1+2). %3 4%",.",5 "#$$%& ' (#))% *&+,%-+ .,/0#1%,2 33333333333333333333333333333333333333333333333333333333333333 '
"#$%&'()$* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ,
-%./$*#0 /# 1#'%&*' 2%&3.)$ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ,
!"#$"% '()"*+, ------------------------------------------------------------------------------------------ .
/012 31224%5 )"%, --------------------------------------------------------------------------------- 6
4(##*#0 5&(% 1667*)/$* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8
78%%"%9 :18 *01;,(# 1% #$, ,28)4#10 -------------------------------------------------------------- 6
-&96.#$: &; /# 1#'%&*' /667*)/$* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ )7. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ?
@&'*;>*#0 )%./$.' 6%&3.)$ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ A
Change activity’s name ------------------------------------------------------------------------------ ?,0%,) ------------------------------------------------------------------------------------------ .@
3A3BB ="C040",+ ------------------------------------------------------------------------------------- .@
D%501"5 78%#"2, ------------------------------------------------------------------------------------ ..
D**)"(4#"1% /042,E10? ---------------------------------------------------------------------------- ..
D**)"(4#"1% )4:,0 ------------------------------------------------------------------------------------ ..
1#'%&*' =*E%/%*.: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ,,
FG. 1#'%&*' @/#*;.:$ H*7. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ,8
B$%()$(%. &; $G. @/#*;.:$ H*7. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ,I
1#'%&*' BJK F&&7: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ,I
D(#"F"#: )"G,-(:(), #$0189$ H4F4 -------------------------------------------------------------------- .I
-%./$. /# 1)$*L*$> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ,?
@.$G&': $& %.9.9E.% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8D
"#$$%& ?@ "-$:*9:-;-:< /&+ "-$:A-#1 333333333333333333333333333333333333333333333333333333333333 4'
"#$%&'()$* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8,
M*.C: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8,
J+"%9 K",E+ ------------------------------------------------------------------------------------------ 66
-
8/17/2019 Android Application Development E-Book
5/84
Android ATC © 2012 555
D55"%9 4 K",E #1 :180 4**)"(4#"1% ---------------------------------------------------------------- 66
=*:$ M*.C: /#' =*:$ 1)$*L*$> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8N
J+"%9 4 ="+#D(#"F"#:---------------------------------------------------------------------------------- 6L
D55"%9 ="+#K",E ------------------------------------------------------------------------------------- 6M
D55 'F,%# #1 ="+# N#,2+ ----------------------------------------------------------------------------- 6
-
8/17/2019 Android Application Development E-Book
6/84
Android ATC © 2012 56
"#$$%& I@ J%,# KC 3 LM:-%&$ J#&FN =%&:#O: J#&FN /&+ P#QA-#1 333333333333333333333 E4
"#$%&'()$* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ R8
@.#(: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ R8
W8")5"%9 4 2,%8 G012 H4F4 (15, ------------------------------------------------------------------ I6
W8")5"%9 4 2,%8 G012 4 0,+180(, G"), ------------------------------------------------------------- IL
X4%5), O,),(# 'F,%#+ -------------------------------------------------------------------------------- IM
O8C-2,%8+ -------------------------------------------------------------------------------------------- IY
-$.V$ @.#(: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ R?
X4%5)"%9 31%#,># Z,%8 O,),(#"1% ----------------------------------------------------------------- I
-
8/17/2019 Android Application Development E-Book
7/84
Android ATC © 2012 6
O]="#,_*,%X,)*,0 ----------------------------------------------------------------------------------- MP
O]="#,R4#4C4+, -------------------------------------------------------------------------------------- MP
380+10+ ------------------------------------------------------------------------------------------------ Y@
J/$/E/:.: *# 1#'%&*' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ?D
P/$*L. 1#'%&*' -$.#$ 2%&L*'.%: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ?8
@.$G&': $& %.9.9E.% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ?8
"#$$%& '>@ *&+,%-+ S%:-D-9/:-%&$ 333333333333333333333333333333333333333333333333333333333333333 I?
"#$%&'()$* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ?I
-%./$*#0 / #&$*;*)/$* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ?I
P&$*;*)/$* /)$*: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ?I
'>42*),S ^1#"G"(4#"1%Z4%49,0 ------------------------------------------------------------------- YL
B(99/%> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ??
-
8/17/2019 Android Application Development E-Book
8/84
Android ATC © 2012 7
Lesson1: Hello Android Framework
C&:,%+F9:-%& "# $G*: 7.:: >&( C*77 7./%# /E&($ $G. 1#'%&*' :&;$C/%. '.L.7&69.#$ ^*$ XBJKZ /#' *$:
/667*)/$* ;%/9.C&%^Y 177 7.::: *# $G*: E&&^ C*77 E. (:*#0 U)7*6:. "JU *# $G. .V/967.: $G/$
/)).:: 1#'%&*' BJK $&&7:Y
F& 6%&6.%7> 7./%# ;%&9 $G*: E&&^_ >&( :G&(7' G/L. $G. 1#'%&*' BJK /#' $G. U)7*6:. 1#'%&*'
J.L.7&69.#$ F&&7: X1JFZ 67(0+*# *#:$/77.'Y
=,#/:-&H /& *&+,%-+ V,%Y#9: F& )%./$. /# 1#'%&*' 6%&3.)$_ >&( G/L. $& )%./$. / :.$ &; ;*7.: /#' / 6%&6.% :$%()$(%. &; ;&7'.%:Y
FG. ;&77&C*#0 :$.6: C*77 G.76 0.$ $G.:. ;*7.: /#' ;&7'.% )%./$.' /($&9/$*)/77>_ E.;&%. >&( )/# :$/%$
'.L.7&6*#0 >&(% 1#'%&*' /667*)/$*Y
WG.# >&( *#:$/77 $G. 1#'%&*' BJK_ >&( C*77 G/L. / :.$ '.L.7&69.#$ $&&7: /#' ($*7*$*.: *#:$/77.'
>&(% G/%' '*:^ $G/$ C*77 G.76 '(%*#0 >&(% 1#'%&*' '.L.7&69.#$Y @&:$ &; $G.:. $&&7: /%.
/)).::*E7. ;%&9 $G. U)7*6:. 1JF 67(0+*# $G%&(0G / :.$ &; L*.C: /#' E($$: X9&%. $G*: *#
lesson 2). That’s why all the Android operations you perform from inside Eclipse, can be
6.%;&%9.' ;%&9 )&99/#' 7*#.Y FG. U)7*6:. 1JF 6%&L*'.: / :*967. /#' *#$(*$*L. `S" $& /)).::
$G.:. )&99/#':Y
P-:U-& Z9)-M$#
F& )%./$. / 6%&3.)$ ;%&9 C*$G*# U)7*6:. X6%.;.%%.' 9.$G&'Z
, H%&9 $G. 9.#( E/% )7*)^ H*7. P.C 1#'%&*' 1667*)/$* 2%&3.)$
-
8/17/2019 Android Application Development E-Book
9/84
Android ATC © 2012 8
8 U#$.% $G. /667*)/$* #/9. /#' 6%&3.)$ #/9. X-/# E. $G. :/9.Z
I U#$.% $G. 6/)^/0. #/9.Y FG*: *: / (#*a(. #/9. ;&% >&(% /667*)/$* /#' (:.' E> 1#'%&*'
:>:$.9 $& '*;;.%.#$*/$. E.$C..# >&(% /667*)/$*: /#' &$G.%:Y @/^. :(%. $G. #/9.
;&77&C: / 6%&6.% ;&7'.% :$%()$(%*#0 .Y0Y (12`4%501"5`4#(`),++1%.
N From the ‘Build SDK’ drop+'&C# 7*:$_ )G&&:. $G. 6%.;.%%.' $/%0.$ ;&% >&( /667*)/$*Y
FG. 7*:$ C*77 )$/*# /77 12": $G/$ >&( G/L. *#:$/77.' *# >&(% 9/)G*#. (:*#0 $G. 1#'%&*'BJK @/#/0.%Y "$ 9./#: $G/$ >&(% )&'. C*77 E. )&%9*#0 $& $G/$ 12"Y P&$. $G/$ *; >&(
)G&&:. / G*0G BJK L.%:*_ $G.# >&(% /667*)/$* 9*0G$ #&$ C&%^ &7'.% '.L*).:Y -7*)^
P.V$
R -G&&:. $& E(*7' / E7/#^ 1)$*L*$>Y -7*)^ P.V$Y
&( )/# :$/%$ E(*7'*#0 >&(%
/667*)/$*Y
.,%0 =%00/&+ )-
FG. :/9. 6%&3.)$ :.$(6 )%./$.' E> U)7*6:. )/# E. /)G*.L.' (:*#0 )&99/#' 7*#.:Q
, S#'.% / W*#'&C: 9/)G*#._ &6.# / )&99/#' 6%&96$ E($ )7*)^*#0 :$/%$ → %(#_ $>6.
90+N $G.# )7*)^ [K
8 -G/#0. )(%%.#$ '*%.)$&%> $& 1#'%&*' $&&7: '*%.)$&%>Q aOR[-$12,bA4%501"5-+5?A#11)+
I UV.)($.Q /#'%&*' 7*:$ $/%0.$:_ $& 0.$ / 7*:$ &; /77 /#'%&*' 67/$;&%9: *#:$/77.'Y F/^. / #&$. &;
$G. $/%0.$ *'Y
N UV.)($.Q
4%501"5 (0,4#, *01;,(# --#409,# a#409,#-"5b --%42, Z:/"0+#D**
--*4#$ a*4#$-#1-E10?+*4(,bAZ:/"0+#D** --4(#"F"#: Z:/"0+#D(#"F"#: --*4(?49,(12`,>42*),`2:4**
4.67/). b$/%0.$+*'c C*$G >&(% BJK L.%:* &; 6%.;.%.#)._ /#' b6/$G+$&+C&%^:6/).c
C*$G $G. 7&)/$* >&( C/#$ $& :/L. >&(% 6%&3.)$ *#Y
Your Android project is now set up with several default configurations and you’re ready to start
1#'%&*' '.L.7&69.#$Y
[F&&-&H \%F, *MM)-9/:-%& 5&( #..' $& %(# >&( /667*)/$* ;%.a(.#$7> '(%*#0 '.L.7&69.#$Y F& '& $G/$_ 1JF 6%&L*'.: / L.%>
(:.;(7 .9(7/$&% &; 1#'%&*' '.L*).: >&( )/# (:.Y 5&( '& #&$ #..' / %./7 1#'%&*' 9&E*7. '.L*).
for testing, though it’s possible if you like to.
[F&&-&H &(% 6%&3.)$ /# .9(7/$&% *#L&7L.: $C& :$.6:Q
, -%./$*#0 /# 1#'%&*' L*%$(/7 '.L*).Y
-
8/17/2019 Android Application Development E-Book
10/84
Android ATC © 2012 9
8 4(##*#0 >&(% 6%&3.)$ $G. .9(7/$&%Y
30,4#"%9 4% D%501"5 F"0#84) R,F"(,
1# 1#'%&*' M*%$(/7 J.L*). X1MJZ *: / )*0(%/$* ;&% / '.L*). .9(7/$&% $G/$ 7.$: >&( '.;*#.
/)$(/7 G/%'C/%. /#' :&;$C/%. &6$*: $& E. .9(7/$.' E> $G. 1#'%&*' U9(7/$&%Y
F& )%./$. /# 1#'%&*' L*%$(/7 '.L*).Q
, =/(#)G $G. 1#'%&*' M*%$(/7 J.L*). @/#/0.%Q
/ "# U)7*6:._ )7*)^ 1#'%&*' M*%$(/7 J.L*). @/#/0.% ;%&9 $G. $&&7E/%_ /#' $G.
;&77&C*#0 '*/7&0 :G&C: (6Q
8U# *A6 J/&/H#, $U%1-&H D#1 ;-,:F/) +#;-9#$]
8 -7*)^ S#1 /#' ;*77 *# $G. '.$/*7: ;&% $G. 1MJY `*L. *$ / #/9._ / 67/$;&%9 $/%0.$_ /# BJ
)/%' :*T._ /#' / :^*#Y
I -7*)^ =,#/:# *A6Y
N B.7.)$ $G. #.C 1MJ ;%&9 $G. 1#'%&*' M*%$(/7 J.L*). @/#/0.% /#' )7*)^ B$/%$Y
R FG. .9(7/$&% #..': ;.C 9*#($.: $& E&&$ (6 ;&% $G. ;*%:$ $*9._ $G.# >&( )/# (#7&)^ $G.
:)%..#Y
78%%"%9 :180 *01;,(# 1% #$, ,28)4#10
F& %(# $G. /66 ;%&9 U)7*6:._ &6.# . &; >&(% 6%&3.)$d: ;*7.: /#' )7*)^ 4(# ;%&9 $G. $&&7E/%Y
U)7*6:. *#:$/77: $G. /66 / )&96/$*E7. 1MJ X$G. . )%./$.' *# 6%.L*&(: :.)$*Z /#' :$/%$: *$Y ";
>&( )G.)^ $G. ):&7. L*.C (#'.% U)7*6:._ >&( :G&(7' /# &($6($ :*9*7/% $& $G. ;&77&C*#0 CG*7.
*#:$/77*#0 $G. /667*)/$* $& $G. 6%&3.)$Q
-
8/17/2019 Android Application Development E-Book
11/84
Android ATC © 2012 :
e8D,8+DA+DA ,RQI?Q8I + =.::,f ++++++++++++++++++++++++++++++
e8D,8+DA+DA ,RQI?Q8I + =.::,f 1#'%&*' =/(#)Gg
e8D,8+DA+DA ,RQI?Q8I + =.::,f /'E *: %(##*#0 #&%9/77>Y
e8D,8+DA+DA ,RQI?Q8I + =.::,f 2.%;&%9*#0 )&9Y/#'%&*'Y/$)Y/#'%&*'Y=.::,1)$*L*$> /)$*L*$> 7/(#)G
e8D,8+DA+DA ,RQI?Q8I + =.::,f 1($&9/$*) F/%0.$ @&'.Q 7/(#)G*#0 #.C .9(7/$&% C*$G )&96/$*E7.
1MJ d1#'%&*'h1F-h1MJd
e8D,8+DA+DA ,RQI?Q8I + =.::,f =/(#)G*#0 / #.C .9(7/$&% C*$G M*%$(/7 J.L*). d1#'%&*'h1F-h1MJd
e8D,8+DA+DA ,RQI?Q8? + =.::,f P.C .9(7/$&% ;&(#'Q .9(7/$&%+RRRN
e8D,8+DA+DA ,RQI?Q8? + =.::,f W/*$*#0 ;&% i[@U Xd/#'%&*'Y6%&).::Y/)&%.dZ $& E. 7/(#)G.'YYY
e8D,8+DA+DA ,RQIAQ,< + =.::,f i[@U *: (6 '.L*). d.9(7/$&%+RRRNd
e8D,8+DA+DA ,RQIAQ,< + =.::,f S67&/'*#0 =.::,Y/6^ $& '.L*). d.9(7/$&%+RRRNd
e8D,8+DA+DA ,RQIAQ,< + =.::,f "#:$/77*#0 =.::,Y/6^YYY
e8D,8+DA+DA ,RQIAQII + =.::,f B()).::g
e8D,8+DA+DA ,RQIAQII + =.::,f B$/%$*#0 /)$*L*$> )&9Y/#'%&*'Y/$)Y/#'%&*'Y=.::,1)$*L*$> '.L*).
.9(7/$&%+RRRN
e8D,8+DA+DA ,RQIAQIR + =.::,f 1)$*L*$>@/#/0.%Q B$/%$*#0Q "#$.#$ j /)$k/#'%&*'Y*#$.#$Y/)$*Y@1"P
)/$ke/#'%&*'Y*#$.#$Y)/$.0&%>Y=1SP-iU4f )96k)&9Y/#'%&*'Y/$)Y/#'%&*'\Y=.::,1)$*L*$> l
5&(% 1#'%&*' /667*)/$* *: *#:$/77.' /# .9(7/$&% /#' >&( )/# #&C :$/%$*#0 '.L.7&69.#$Y
5&( C*77 #&$*). $G/$ $G. .9(7/$&% G&9. :)%..# C*77 E. $G. 7&)^ :)%..#Y S#7&)^ *$ $& :.. >&(%
project’s screenQ
http://developer.android.com/training/basics/firstapp/building-ui.htmlhttp://developer.android.com/training/basics/firstapp/building-ui.htmlhttp://developer.android.com/training/basics/firstapp/building-ui.htmlhttp://developer.android.com/training/basics/firstapp/building-ui.htmlhttp://developer.android.com/training/basics/firstapp/building-ui.html
-
8/17/2019 Android Application Development E-Book
12/84
Android ATC © 2012 ;
J.;/(7$ :)%..# &; #.C7> )%./$.' 6%&3.)$
The emulator’s window is not re+:*T/E7.Y B&9.$*9.:_ >&( C*77 E. '.L.7&6*#0
/ 7/6$&6 &% /#> 6) C*$G / :9/77 :)%..# $G/$ :&9. 6/%$: &; $G. .9(7/$&% C&(7' E.
out of boundaries. To resolve this, you can change the emulator’s size following
$G.:. :$.6:Q
,Y -7*)^ $G. /%%&C #.V$ $& %(# E($$
8Y
IY )G&&:. 78% 31%G"9804#"1%````
NY S#'.% $G. F/%0.$ $/E &; >&( 6%&3.)$_ ;*77 *# $G. $G. ;&77&C*#0 )&99/#' *#
field “Additional Emulator Command Line Option”: -+(4), @`YI
RY -7*)^ D**):_ $G.# 78%
FG. .9(7/$&% C*#'&C C*77 E. ?Rm &; *$: &%*0*#/7 :*T.Y
-
8/17/2019 Android Application Development E-Book
13/84
Android ATC © 2012 <
Components of an Android applicationFG. ;&77&C*#0 /%. $G. 9/3&% )&96.#$ $G/$ 6%&L*'. $G. E(*7'*#0 E7&)^: ;&% /#> 1#'%&*'
/667*)/$* /#' /)$ /: / 6&::*E7. .#$%> 6&*#$ ;&% >&(% /667*)/$*Q
,Y *9:-;-:-#$
FG*: *: > our application’s user interface. Every screen in an application ,>#,%5+ $G. 1)$*L*$> )7/::Y 1)$*L*$*.: (:. M*.C: $& )%./$. 0%/6G*)/7 (:.% *#$.%;/).: *#$.%/)$ C*$G $G.
(:.%Y
8Y 5#,;-9#$
1 :.%L*). *: $G. *#L*:*E7. 6/%$ &; >&(% /667*)/$*Y FG.> %(# *#L*:*E7> (6'/$*#0 '/$/
:&(%).: /#' L*:*E7. 1)$*L*$*.:Y B.%L*).: /%. (:.' $& 6.%;&%9 )$*#(&(: 6%&).::*#0 .L.#
when an application’s Activities aren’t active or visible.
IY =%&:#&: V,%;-+#,$
FG.> /%. / '/$/ :$&%. $G/$ *: .V6&:.' ;&% :G/%*#0Y -$.#$ 2%&L*'.%: 9/#/0. /#' :G/%.
/667*)/$* '/$/E/:.:Y FG.> /%. $G. 6%.;.%%.' C/> &; :G/%*#0 '/$/ /)%&:: '*;;.%.#$
/667*)/$*:n *Y.Y >&( )/# )*0(%. >&(% &C# -$.#$ 2%&L*'.%: $& 6.%9*$ /)).:: ;%&9
&$G.% /667*)/$*:Y 1#'%&*' 6%&L*'.: :.L.%/7 #/$*L. -$.#$ 2%&L*'.%: $G/$ .V6&:. (:.;(7'/$/E/:.: 7*^. )$/)$: /#' )/77 7&0: *#;&%9/$*Y
NY ^,%/+9/$: [#9#-;#,$
FG.> ):(9. 9.::/0.: E%&/'+)/:$.' E> "#$.#$:Y WG.# / E%&/')/:$ %.).*L.% *: /''.' $&
>&(% /667*)/$*_ *$ 9./#: >&(% /667*)/$* )/# 7*:$.# ;&% E%&/')/:$ "#$.#$: $G/$ 9/$)G
:6.)*;*) ;*7$.% )%*$.%*/Y
FG. ;&77&C*#0 /%. &$G.% .V/967.: &; :&9. &; 1#'%&*' o/L/ &E3.)$: >&( C*77 :.. ;%.a(.#$7> *# $G*:
E&&^Q
,Y A-#1$
M*.C: /%. &E3.)$: $G/$ ^#&C G&C $& '%/C *$:.7; $& $G. :)%..#Y U/)G /)$*L*$> *: 9/'. (6 &;
/ :.$ &; L*.C: 0%&(6.' $&0.$G.% C*$G*# / 7/>&($Y M*.C *: $G. 6/%.#$ )7/:: &; /77 1)$*L*$>
C*'0.$:Y
8Y C&:#&:$
FG.:. /%. &E3.)$: (:.' $& :.#' 9.::/0. /)%&:: $G. CG&7. 1#'%&*' :>:$.9Y FG.> /%. (:.'
$& E%&/')/:$ 9.::/0.:_ :$/%$ /# 1)$*L*$>_ &% :$/%$ / B.%L*)._ *#)7('*#0 /# "%#,%#"1% $& G/L.
an action performed. It’s the system’s duty to interpret the message and determine $G.
$/%0.$X:Z $G/$ C*77 6.%;&%9 /#> /)$*: /: /66%&6%*/$.Y
IY S%:-D-9/:-%&$
FG.> )/# E. (:.' *# /# /667*)/$* $& /7.%$ (:.%: $& ).%$/*# .L.#$: C*$G&($ G/L*#0 /
visible activity. Notifications do not steal focus or interrupt user’s current interaction C*$G an activity. They are preferably used to get a user’s attention from within a service.
H&% .V/967._ CG.# / :.%L*). ;*#*:G.: '&C#7&/'*#0 / ;*7. ;%&9 $G. "#$.%#.$_ *$ )/# /7.%$ $G.
(:.% E> / #&$*;*)/$* $G/$ )/# 9/^. :&(#'_ :G&C '*/7&0 9.::/0.:_ L*E%/$.YYYY.$)Y
-
8/17/2019 Android Application Development E-Book
14/84
Android ATC © 2012 =
Application Life-cycle
-$%/%> $& $%/'*$*/7 /667*)/$*: >&( E(*7'_ Android applications’ life cycle is controlled by
the Android framework itself. It’s Android that runs and shuts down correctly the applications
CG.# *$ *: #..'.'Y 1#'%&*' /667*)/$*: /%. /7C/>: 7*:$.#*#0 $& )G/#0.: *# *$: :$/$. /#' %.:6'
/))&%'*#07> $*77 *$ %./)G.: 6%&6.% $.%9*#/$*Y U/)G 1#'%&*' /667*)/$* %(#: *$: &C# 6%&).::
/#' 6%&).:: 9/#/0.9.#$ *: G/#'7.' .V)7(:*L.7> /$ %(# $*9.Y 5&( C*77 7./%# 7/$.% /E&($ $G.
G/#'7*#0 &; 7*;. )>)7. .L.#$ $G%&(0G o/L/ )/77+E/)^ 9.$G&':Y
1#'%&*' /)$*L.7> 9/#/0.: *$: %.:&(%).:_ '&*#0 CG/$.L.% *$ $/^.: $& .#:(%. $G/$ $G. '.L*).
%.9/*#: /)$*L.Y F& /)G*.L. $G*:_ 1#'%&*' C*77 ̂ *77 /667*)/$*: C*$G&($ / C/%#*#0 *; #.).::/%> $&
;%.. %.:&(%).: ;&% /667*)/$*: &; G*0G.% 6%*&%*$>Y
F& '.$.%9*#. CG*)G 6%&).::.: :G&(7' E. ^*77.' CG.# 7&C 9.9&%>_ 1#'%&*' )7/::*;*.: ./)G /667*)/$*into an “importance hierarchy” based type of components the application is made of and the state of those
)&96.#$:Y
V:*, 1G D%501"5 *01(,++,+ 4%5 #$,"0 *0"10"#",+
● .%,#H,%F&+ _*9:-;#` M,%9#$$#$
FG&:. /%. /667*)/$*: C*$G )&96.#$: )(%%.#$7> *#$.%/)$*#0 C*$G $G. (:.%Y FG.:. /%.
$G. 6%&).::.: 1#'%&*' *: $%>*#0 $& ^..6 %.:6:*L. E> %.)7/*9*#0 %.:&(%).:Y FG.%. /%.
0.#.%/77> L.%> ;.C &; $G.:. 6%&).::.:_ /#' $G.> C*77 E. ^*77.' > /: / 7/:$ %.:&%$Y
● A-$-Q)# M,%9#$$
Visible, but inactive processes are those hosting “visible” Activities. As the name
suggests, visible Activities are visible, but they aren’t in the fore0%&(#' &% %.:6'*#0 $&
(:.% .L.#$:Y FG*: G/66.#: CG.# /# 1)$*L*$> *: > 6/%$*/77> &E:)(%.' XE> / #+;(77+
screen or transparent Activity). There are generally very few visible processes, and they’ll
> E. ̂ *77.' *# .V$%.9. )*%)(9:$/#).: $& /77&C /)$*L. 6%&).::.: $& )$*#(.Y
-
8/17/2019 Android Application Development E-Book
15/84
Android ATC © 2012 >
● 5#,;-9#$
2%&).::.: G&:$*#0 B.%L*).: $G/$ G/L. E..# :$/%$.'Y B.%L*).: :(66&%$ &*#0 6%&).::*#0
that should continue without a visible interface. Because Services don’t interact directly
C*$G $G. (:.%_ $G.> %.).*L. / :7*0G$7> 7&C.% 6%*&%*$> $G/# L*:*E7. 1)$*L*$*.:Y FG.> /%. :$*77
considered to be foreground processes and won’t be killed unless resources are needed
;&% /)$*L. &% L*:*E7. 6%&).::.:Y
● ^/92H,%F&+ M,%9#$$
Processes hosting Activities that aren’t visible and that don’t ha L. /#> B.%L*).: $G/$ G/L.
E..# :$/%$.' /%. ):*'.%.' E/)^0%&(#' 6%&).::.:Y FG.%. C*77 0.#.%/77> E. / 7/%0.
#(9E.% &; E/)^0%&(#' 6%&).::.: $G/$ 1#'%&*' C*77 ̂ *77 (:*#0 / 7/:$+:..#+;*%:$+^*77.'
6/$$.%# $& &E$/*# %.:&(%).: ;&% ;&%.0%&(#' 6%&).::.:Y
● Z0M:< M,%9#$$
F& *96%&L. &L.%/77 :>:$.9 6.%;&%9/#)._ 1#'%&*' &;$.# %.$/*#: /667*)/$*: *# 9.9&%>/;$.% $G.> G/L. %./)G.' $G. .#' &; $G.*% 7*;.$*9.:Y 1#'%&*' 9/*#$/*#: $G*: )/)G. $&
*96%&L. $G. :$/%$+up time of applications when they’re re+7/(#)G.'Y FG.:. 6%&).::.: /%.
%&($*#.7> ^*77.' /: %.a(*%.'Y
Modifying created project
1$ $G. E.0*##*#0 &; $G*: 7.::_ C. )%./$.' / 6%&3.)$ CG*)G )$/*#: + E> '.;/(7$ + / :*#07. :)%..#
(Activity) showing a “Hello World!” message. In this exercise, we’ll try to get familiar with $G.
/#'%&*' 6%&3.)$ :$%()$(%. E> '&*#0 $C& 9*#&% )G/#0.:Q
1 Changing the main activity’s name that shows up in the top bar
2 Changing the “Hello World!” message.
Change activity’s name
F& )G/#0. $G. 1)$*L*$> #/9. CG*)G :G&C: (6 *# $G. $&6 E/% &; $G. :)%..# /#d the “Hello World!”
9.::/0._ ;&77&C $G.:. :$.6:Q
1 Under “Package explorer” in the left pane, expand the 0,+ ;&7'.% (#'.% 6%&3.)$ =,++1%. ̀
2 UV6/#' F4)8,+ ;&7'.%
3 J&(E7. )7*)^ +#0"%9+`>2) ;*7.
4 @/^. :(%. $G. 7,+180(,+ $/E *: &6.#.'_ $G.# )7*)^.' .7.9.#$ #"#),c24"%c4(#"F"#:` 5 [# $G. %*0G$ :*'. &; $G. :)%..#_ (#'.% ;*.7' K4)8,de %.67/). “MainActivity” C*$G “Lesson
1”
6 -7*)^ .7.9.#$ $,))1cE10)5e $G.# (#'.% ;*.7' K4)8,d , replace “Hello World!” with “ X,))1
!10)5 G012 D%501"5 D`V`3`!”
7 B/L. )G/#0.: + .*$G.% E> 6%.::*#0 3V7=BO &% E> )7*)^*#0 $G. :/L. E($$ *# U)7*6:.Y
-
8/17/2019 Android Application Development E-Book
16/84
Android ATC © 2012 ?
8 Run the project and you’ll see the changes on the main screen of your application:
1)$*L*$> /;$.% 9&'*;*)/$*
-
8/17/2019 Android Application Development E-Book
17/84
Android ATC © 2012 7@
Lesson 2
Android SDK Tools and Activity Class
*&+,%-+ 5%D:1/,# "/:$.9 *: 9/'. (6 &; :.L.%/7 7/>.%: /: :G&C# *# $G. ;*0(%. E.7&CY
Linux kernel
1#'%&*' %.7*.: / =*#(V ^.%#.7 ;&% )&%. :>:$.9 :.%L*).: :()G /: :.)(%*$>_ 9.9&%> 9/#/0.9.#$_
6%&).:: 9/#/0.9.#$_ #.$C&%^ :$/)^_ /#' G/%'C/%. '%*L.%:Y FG. ^.%#.7 /7:& /)$: /: /#
/E:$%/)$* 7/>.% E.$C..# $G. G/%'C/%. /#' $G. %.:$ &; $G. :&;$C/%. :$/)^Y =*#(V *: / 6%&L.#'%*L.% 9&'.7 /#' .;;*)*.#$ *# %.:&(%). 9/#/0.9.#$Y
C/C++ Libraries
[# $&6 &; $G. =*#(V ^.%#.7 )&9.: / :.$ &; #/$*L. 7*E%/%*.: C%*$$.# *# -\-pp_ CG*)G /%.
%.:6:*E7. ;&% :$/E7. 6.%;&%9/#). &; L/%*&(: )&96.#$:Y FG.> 9/#/0. $G. /)).:: ;&% '*;;.%.#$
6%&).::.: $& )&96&:. 8J /#' IJ 0%/6G*) 7/>.%:Y FG.> /%. /7:& %.:6:*E7. ;&% 9.'*/ ;%/9.C&%̂
-
8/17/2019 Android Application Development E-Book
18/84
Android ATC © 2012 77
6%&).::*#0n *Y.Y 67/>E/)^ /#' %.)&%'*#0 :(66&%$ ;&% /77 $G. 9/3&% 9.'*/ /#' :$/$*) *9/0. ;*7.: + *#
/''*$* $& :(66&%$*#0 ;$:_ '/$/ :$&%/0._ /#' C.E E%&C:.%:Y
Android Runtime
P.V$ $& $G. -\-pp 7*E%/%*.: 7*.: $G. 1#'%&*' 4(#$*9._ CG.%. $G. 9/*# )&96.#$ R4)F"?
K"0#84) Z4($"%, TRKZU *: 7&)/$.'Y "$ C/: '.:*0#.' E/:.' o/L/ M*%$(/7 @/)G*#. :6.)*;*)/77>;&% 1#'%&*' %(##*#0 *# 7*9*$.' .#L*%.#$_ CG.%. $G. 7*9*$.' E/$$.%>_ -2S_ 9.9&%> /#' '/$/
:$&%/0. /%. $G. 9/*# *::(.:Y "#:$./' &; Y3/% ;*7. $G/$ /%. %./' E> oM@_ $G. JM@ %./' Y'V ;*7.:Y
FG.:. E>$.+)&'. &6$*9*T.' ;*7.: $G/$ /%. 9&%. .;;*)*.#$ $& %(# :9/77 6%&).::.:Y
1#'%&*' %(#$*9. )$/*#: )&%. 7*E%/%*.: $G/$ /%. C%*$$.# *# o/L/ 7/#0(/0. /#' )$/*#: &; $G.
)&77.)$* )7/::.:_ $G. ($*7*$*.:_ "[ /#' &$G.% $&&7:Y
Application Framework
FG. 1667*)/$* H%/9.C&%^ *: C%*$$.# *# o/L/ 7/#0(/0.Y "$ *: / )&77.)$* &; o/L/ 7*E%/%*.: $G/$ /77
1#'%&*' /667*)/$*: (:._ CG.$G.% #/$*L. 1#'%&*' /667*)/$*: 7*^. '*/7.% &% /#> &$G.%/667*)/$* /#> 1#'%&*' '.L.7&6.%Y "$ G/: :.L.%/7 )&96.#$:_ ;&% .V/967. $G. 1)$*L*$> @/#/0.%
9/#/0.: $G. 7*;. )>)7. &; $G. /667*)/$*:_ $G. 2/)^/0. @/#/0.% ^..6: $%/)^ &; $G. /667*)/$*:_
CG*)G /%. *#:$/77.' *# $G. '.L*)._ $G. F.7.6G> @/#/0.% )$/*#: &; / :.$ &; 12" #.).::/%> ;&%
)/77*#0 /667*)/$*: #&$*;*)/$* 9/#/0.% *: (:.' $& )(:$&9*T. '*:67/> /7.%$: /#' &$G.% ;(#)$*:Y
Application layer
FG*: *: $G. (66.% 9&:$ 7/>.% &; $G. 1#'%&*' 1%)G*$.)$(%. CG*)G )$/*#: /77 $G. /667*)/$*: (:.'
E> $G. .#' (:.%Y 177 /667*)/$* $G/$ >&( E(*7' 7*.: *# $G*: 7/>.% /#' $G.> /%. /77 C%*$$.# (:*#0 $G.
o/L/ 6%&0%/99*#0 7/#0(/0.Y
*&+,%-+ "-Q,/,-#$ 1#'%&*' &;;.%: / :.$ &; o/L/ 12": ;&% '.L.7&6*#0 >&(% /667*)/$*:Y FG. ;&77&C*#0 *: / #+
)&967.$. 7*:$ &; $G. 9/*# 7*E%/%*.: 6%&L*'.' E> 1#'%&*' BJKY 177 1#'%&*' '.L*).: 9(:$ 6%&L*'.
:(66&%$ ;&% $G.:. 7*E%/%*.:Q
/&+,%-+];-#1
FG*: 7*E%/%> 6%&L*'.: $G. 9/*# )7/::.: ;&% 1#'%&*' 0%/6G*)/7 (:.% *#$.%;/).: /#' ;&% G/#'7*#0
user’s interaction with the UI. The View class +6/%$ &; $G*: 6/)^/0.+ *: $G. 9&:$ *96&%$/#$ S"
)7/:: CG*)G &$G.% :)%..# )&96.#$: *#G.%.#$ ;%&9Y
/&+,%-+]1-+H#:
The widget package contains GUI elements to use on your Application’s screen. This package
'.%*L.: ;%&9 $G. L*.C 6/)^/0. /#' )$/*#: E(*7$+*# L*.C: %./'> $& E. (:.' / :)%..#Y
/&+,%-+]F:-)
FG*: *: $G. 9/*# ($*7*$> 6/)^/0. CG*)G *#)7('.: :6.)*/7 )7/::.: 7*^. :$%*#0 ($*7*$*.: ;&%9/$$.%: /#'
q@= 6/%:.%:Y
-
8/17/2019 Android Application Development E-Book
19/84
Android ATC © 2012 78
/&+,%-+]+/:/Q/$#
"$ 6%&L*'.: $G. 12" $& /)).:: 7&C+7.L.7 *#$.%/)$*: C*$G 1#'%&*' '/$/E/:.: /#' G/#'7*#0
)(%:&%:Y
/&+,%-+]9%&:#&:
2%&L*'.: )7/::.: $& 9/#/0. '/$/ /)).::Y FG.:. )7/::.: /%. 9/*#7> (:.' C*$G %.:&(%).:_ )$.#$6%&L*'.%:_ /#' 6/)^/0.:Y -$.V$ )7/:: *: 6/%$ &; $G*: 7*E%/%>Y
/&+,%-+]/MM
2%&L*'.: /)).:: ;&% G*0G+7.L.7 )&96.#$: &; $G. /667*)/$* 9&'.7Y H&% .V/967._ 1)$*L*$> /#'
B.%L*). )7/::.: + E/:*) )7/::.: ;&% /77 1#'%&*' /667*)/$*: + /%. 6/%$ &; $G*: 6/)^/0.Y
/&+,%-+]M,%;-+#,
FG*: 7*E%/%> 6%&L*'.: ./:*.% /)).:: $& $G. E/:*) -$.#$ 2%&L*'.%:_ 7*^. $G. )$/)$: /#' )/7.#'/%
'/$/E/:.:Y
/&+,%-+]:#)#MU%& 6/)^/0. 0*L.: $G. /E*7*$> $& 9*$&% E/:*) 6G. *#;&%9/$*_ 7*^. $G. 6G. :$/$._
#.$C&%^ )#.)$*L*$>_ /#' B@B 9.::/0.:Y
/&+,%-+]1#Q2-:
2%&L*'.: )7/::.: $& /77&C >&(% /667*)/$* $& E%&C:. $G. C.EY FG. 9/*# )7/:: *# $G*: 7*E%/%> (:.'
E> '.L.7&6.%: *: W.EM*.CY
"# /''*$* $& :.$ &; /'L/#).' 1#'%&*' 7*E%/%*.: 7*^. /&+,%-+])%9/:-%&N /&+,%-+]0#+-/N
/&+,%-+]%M#&H)N /&+,%-+]U/,+1/,#N /&+,%-+]Q)F#:%%:UN YYY.$)Y
The Android Manifest File
FG. 1#'%&*' 9/#*;.:$ *: $G. 9&:$ *96&%$/#$ ;*7. $G/$ .L.%> /667*)/$* 9(:$ )$/*# *# *$: %&&$
'*%.)$&%> /#' :G&(7' E. #/9.' .V/)$7> *&+,%-+J/&-D#$:]O0)] "$ *: + /: $G. #/9. :(00.:$: +
/# q@= ;*7. $G/$ 6%&L*'.: .::.#$*/7 *#;&%9/$* /E&($ $G. /667*)/$* $& $G. 1#'%&*' :>:$.9_
*#;&%9/$* $G. :>:$.9 9(:$ G/L. E.;&%. *$ )/# %(# /#> &; $G. /667*)/$*d: )&'.Y FG. ;&77&C*#0
/%. :&9. &; $G. *#;&%9/$* $G. 9/#*;.:$ )$/*#:Q
● FG. o/L/ 6/)^/0. #/9.: &; $G. /667*)/$*_ CG*)G *: / (#*a(. *'.#$*;*.% ;&% $G.
/667*)/$*Y
● A detailed description of the application’s components, i.e. the activities, services, E%&/')/:$ %.).*L.%:_ /#' )$.#$ 6%&L*'.%: $G/$ $G. /667*)/$* *: )&96&:.' &;Y U/)G &;
$G.:. )&96.#$: G/: / :6.)*/7 q@= $/0 :>#$/VY
● "$ '.)7/%.: CG*)G 6.%9*::*: $G. /667*)/$* 9(:$ G/L. *# &%'.% $& /)).:: 6%&$.)$.'
6/%$: &; $G. 12"Y
-
8/17/2019 Android Application Development E-Book
20/84
Android ATC © 2012 79
● "$ '.)7/%.: $G. 9*#*9(9 7.L.7 &; $G. 1#'%&*' 12" $G/$ $G. /667*)/$* %.a(*%.:Y FG*: L/7(.
determines whether your application is supported on a certain device’s Android OS
L.%:* &% #&$Y
Structure of the Manifest File
The image below is a sample of a manifest file that shows the structure and every element that
it can contain.
Android SDK Tools 1#'%&*' BJK *#:$/77.' 7&)/77> >&(% '*:^_ )&9.: C*$G / :.$ &; $&&7: $G/$ /%. L.%> G.76;(7 ;&%
>&(% '.L.7&69.#$ C&% Ŷ F& )G.)^ /77 $G. $&&7: /#' 6%&0%/9: $G/$ )&9.: C*$G $G. BJK E%&C:. $&
$G. ;&77&C*#0 ;&7'.%Q a567bT/&+,%-+3$+2TM)/:D%,03:%%)$ /#' a567bT/&+,%-+3
$+2T:%%)$ CG.%. 567 *: $G. *#:$/77/$* ;&7'.% &; >&(% BJKY FG. ;&77&C*#0 *: / 7*:$ &; $G. 9&:$
*96&%$/#$ 1#'%&*' BJK $&&7: >&( 9*0G$ ;*#' G.76;(7 '(%*#0 >&(% /667*)/$* '.L.7&69.#$
, 66J5Q B$/#': ;&% Dalvik Debug Monitor Server, it’s a debugging tool which provides:)%..# )/6$(%. $G. '.L*)._ $G%./' /#' G./6 *#;&%9/$* $G. '.L*)._ 7&0)/$_ 6%&).::_
/#' %/'*& :$/$. *#;&%9/$*_ *#)&9*#0 )/77 /#' B@B :6&&;*#0_ 7&)/$* '/$/ :6&&;*#0_ /#'
9&%.Y
-
8/17/2019 Android Application Development E-Book
21/84
Android ATC © 2012 7:
F& %(# JJ@B ;%&9 U)7*6:.Q -7*)^ P-&+%1 b LM#& V#,$M#9:-;# b L:U#,]]] b 66J5Y
8 (-#,/,9U&( $& '.E(0 /#' &6$*9*T. >&(% (:.% *#$.%;/).Y "$ 6%&L*'.: /
L*:(/7 %.6%.:.#$/$* &; $G. 7/>&($d: M*.C G*.%/%)G> X$G. =/>&($ M*.CZ /#' / 9/0#*;*.'
*#:6.)$&% &; $G. '*:67/>
-
8/17/2019 Android Application Development E-Book
22/84
Android ATC © 2012 7;
I *6^Q 1#'%&*' J.E(0 r%*'0. X/'EZ *: / )&99/#' 7*#. $&&7 $G/$ 7.$: >&( )&99(#*)/$.
C*$G /# .9(7/$&% &% )#.)$.' 1#'%&*'+6&C.%.' 6G.Y "$ *: / )7*.#$+:.%L.% 6%&0%/9
$G/$ *#)7('.:Q / )7*.#$_ CG*)G %(#: >&(% '.L.7&69.#$ 9/)G*#._ / :.%L.%_ CG*)G %(#: /:
/ E/)^0%&(#' 6%&).:: >&(% '.L.7&69.#$ 9/)G*#._ /#' / '/.9_ CG*)G %(#: /: /
E/)^0%&(#' 6%&).:: ./)G .9(7/$&% &% '.L*). *#:$/#).Y
N "%H9/:Q A mechanism for collecting and viewing system debug output. Logs from
various applications and portions of the system are collected, which then can be viewed
and filtered by the !"#$%& command. You can use !"#$%& from an ADB shell to view
the log messages using command adb logcat, or more preferrably, use DDMS from
within Eclipse to see your application logs in the logcat view
To log a message in your application and make it viewable through logcat, use the
following syntanx:
Log.i("Application Tag", "This is the logged message”);
R 8,/9#;-#1@ This is a graphical viewer for execution data saved by your application. It
help you debug your application and profile its performance. Traceview is located under
tools/ SDK directory.
Activity life-cycle through Java
1)$*L*$> *: $G. E/:. )7/:: ;&% .L.%> 1#'%&*' /667*)/$* )&96.#$ $G/$ )$/*#: 0%/6G*)/7 (:.%
*#$.%;/).Y UL.%> /667*)/$* >&( &6.# /#' >&( *#$.%/)$ C*$G *: /# .V$.#:* &; )7/:: 1)$*L*$>Y
In Lesson 1, you have seen a description of the an Android’s activity life+)>)7.Y UL.%> :$/$. &; $G*:
)>)7. *: %.6%.:.#$.' /#' 6%&L*'.' $& /667*)/$* '.L.7&6.% C*$G $G. (:. &; o/L/ )/77 E/)^:Y FG.:.
-
8/17/2019 Android Application Development E-Book
23/84
Android ATC © 2012 7<
/%. ;(#)$*: $G/$ /%. )/77.' E> $G. 1#'%&*' :>:$.9 CG.#.L.% /# .L.#$ &))(%:Y H&% .V/967._
CG.# >&( 7/(#)G /# 1#'%&*' /667*)/$*_ $G. 9&9.#$ $G. 1#'%&*' :>:$.9 :$/%$: 7&/'*#0 $G.
9/*# /)$*L*$> &; $G/$ /667*)/$*_ *$ :.#': $G. )/77E/)^ -%./$.XZY "# >&(% o/L/ )&'. >&( )/#
&L.%%*'. $G/$ 9.$G&' /#' /'' >&(% &C# o/L/ )&'. $& E. .V.)($.' E> $G. :>:$.9Y "# ;/)$_ 1#'%&*'
BJK 6%&L*'.: / )/77E/)^ 9.$G&' ;&% ./)G .L.#$ *# /# /)$*L*$> 7*;.+)>)7.Y FG. ;&77&C*#0 *: :^.7.$
of a Java class which extends Activity and overrides it’s life+)>)7. .L.#$:Y
!"#$%& "#$%&'$("))(*+,'-',./ !"#$%& "#$%&'$(&0(12#$34/ #'()!* *)+,, 5.*+,'-',. -.&-/0, *+,'-',. 6
!! #$%%&' $( ()& *($+( ,- ()& -.%% %/-&(/0&1 712-%%!0- #'()!* 2$!0 %4",4912#$34 '+'+34: 6
,'#-%(%4",49'+'+34:/ !! 23/(/$%/4& $5(/6/(71
; !! #$%%&' $-(&+ ,3#+&$(& )$* -/3/*)&'8 .*& (, +&*(,+& 92 *($(& 712-%%!0- #'()!* 2$!0 ,",4: 6
,'#-%(,",4:/ !! :&*(,+& 92 *($(& -+,0 ()& *$6&'23*($35&;($(&1 !! +,5&**1
; !! #$%%&' $( ()& *($+( ,- ()& 6/*/=%& %/-&(/0&1 712-%%!0- #'()!* 2$!0 >,"%,9:6
,'#-%(>,"%,9:/ !! D>>%7 $37 +&?./+&' 92 5)$3A& 3,C ()$( ()& D5(/6/(7 /* 6/*/=%&1
; !! #$%%&' $( ()& *($+( ,- ()& $5(/6& %/-&(/0&1 712-%%!0- #'()!* 2$!0 '$(&*8 ()+&$'*8 ,+ >+,5&**&* +&?./+&' !! =7 ()& $5(/6/(7 =.( *.*>&3'&' C)&3 /( C$* /3$5(/6&1
; !! #$%%&' (, *$6& 92 *($(& 5)$3A&* $( ()& !! &3' ,- ()& $5(/6& %/-&575%&1
712-%%!0- #'()!* 2$!0 >"-4=#0,"#+4>,",4912#$34 0"-4$=#0,"#+4>,",4: 6
!! ;$6& 92 *($(& 5)$3A&* (, ()& *$6&'23*($35&;($(&1
!! +,5&** /* !! B/%%&' $3' +&*($+(&'1 ,'#-%(>"-4=#0,"#+4>,",490"-4$=#0,"#+4>,",4:/
; !! #$%%&' $( ()& &3' ,- ()& $5(/6& %/-&(/0&1 712-%%!0-
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.html
-
8/17/2019 Android Application Development E-Book
24/84
Android ATC © 2012 7=
#'()!* 2$!0 @"2049:6 !! ;.*>&3' 92 .>'$(&*8 ()+&$'*8 ,+ #E9 /3(&3*/6& >+,5&**&* // that don’t need to be updated when the Activity isn’t !! ()& $5(/6& -,+&A+,.3' $5(/6/(71 ,'#-%(@"2049:/
; !! #$%%&' $( ()& &3' ,- ()& 6/*/=%& %/-&(/0&1 712-%%!0- #'()!* 2$!0 >,&)9:6
!! ;.*>&3' +&0$/3/3A 92 .>'$(&*8 ()+&$'*8 ,+ >+,5&**/3A // that aren’t required when the Activity isn’t visible. !! E&+*/*( $%% &'/(* ,+ *($(& 5)$3A&* !! $* $-(&+ ()/* 5$%% ()& >+,5&** /* %/B&%7 (, =& B/%%&'1 ,'#-%(>,&)9:/
; !! #$%%&' $( ()& &3' ,- ()& -.%% %/-&(/0&1 712-%%!0- #'()!* 2$!0 A40,%&.9:6
!! #%&$3 .> $37 +&*,.+5&* /35%.'/3A &3'/3A ()+&$'*8 !! 5%,*/3A '$($=$*& 5,33&5(/,3* &(51 ,'#-%(A40,%&.9:/
; ;
Create an Activity
F& /'' /# /)$*L*$> $& $G. 6%&3.)$ $G/$ C. )%./$.' *# =.:: ,_ >&( :G&(7' ;&77&C $G.:. :$.6:Q
, -%./$. / o/L/ )7/:: $G/$ .V$.#': 1)$*L*$>
*8C)"( ()4++ Z:D(#"F"#: ,>#,%5+ D(#"F"#:
8 [L.%%*'. $G. 1%30,4#,TU .L.#$Q *8C)"( F1"5 1%30,4#,TW8%5), +4F,5N%+#4%(,O#4#,U
I -%./$. / 7/>&($ %.:&(%).
4.:&(%). ;*7.: /%. :/L.' (#'.% $G. ,#$ ;&7'.% &; >&(% /667*)/$*Y FG. ;&77&C*#0 *9/0.
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.html
-
8/17/2019 Android Application Development E-Book
25/84
Android ATC © 2012 7>
:G&C: $G. '.;/(7$ ;&7'.% :$%()$(%. )%./$.' E> 1JF CG.# >&( )%./$. / 6%&3.)$Q
4.:&(%). ;*7.: /%. ;*7.: $G/$ )$/*# %/C '/$/ $G/$ )/# E. /)).::.' /#' (:.' E> >&(% o/L/)&'.Y U/)G 1)$*L*$> 9(:$ G/L. / 7/>&($Y 5&( )/# :6.)*;> $G. )&96.#$: &; $G/$ 7/>&($ *#
/# q@= %.:&(%). ;*7. :/L.' (#'.% ,#$T)/&($Q
-
8/17/2019 Android Application Development E-Book
26/84
Android ATC © 2012 7?
/ 4*0G$ )7*)^ ,#$T)/ '&*#0 $G*:_ $G. 1#'%&*' :>:$.9 C&(7' E.
notified of the activity’s presence. If you omit this step, then your Java and layout files
C&(7' :*967> #&$ .V*:$ /))&%'*#0 $& $G. :>:$.9 .L.# *; *#)7('.' *# >&(% /667*)/$*
6/)^/0.Y F& /'' $G. /)$*L*$> ;&77&C $G.:. :$.6:Q
/ J&(E7. )7*)^ 1#'%&*'@/#*;.:$YV97
E "# $G. @/#*;.:$ .'*$&%_ )7*)^ $G. /667*)/$* $/E E.7&CQ
-
8/17/2019 Android Application Development E-Book
27/84
Android ATC © 2012 8@
) -7*)^ *++]]] $G.# )G&&:. *9:-;-:&(
)%./$.' *# :$.6 ,Y -7*)^ ^,%1$#]]]N $G.# )G&&:. $G. o/L/ )7/::Y
. B/L. >&(% C&%^ E> $>6. =:,)e$Y
R 1;$.% >&( /'' %.a(*%.' ;*7.:_ >&( G/L. $& $.77 $G. o/L/ 1)$*L*$> )7/:: )%./$.' *# :$.6 , $&(:. $G. 7/>&($ ;*7. )%./$.' *# :$.6 IY J& :& E> )/77*#0 :.$-$.#$M*.CXZ 9.$G&' *#:*'.
-%./$.XZ 9.$G&'Y !"#$%"'(")*+,-./%0#,1/2-./%0#3 WG.%. 9>h7/>&($ *:
$G. #/9. &; $G. q@= 7/>&($ ;*7. (#'.% ,#$T)/
-
8/17/2019 Android Application Development E-Book
28/84
Android ATC © 2012 87
Lesson 3: ListActivity and ListView
C&:,%+F9:-%&
1# 1)$*L*$> *: / )%()*/7 )&96.#$ &; >&(% 1#'%&*' /667*)/$*Y "$ *: /)$(/77> /# &E7*0/$&%>
)&96.#$ *; >&( C/#$ $G. (:.% $& *#$.%/)$ C*$G >&(% /667*)/$*Y "; >&( G/L. (:.' /# 1#'%&*'+
6&C.%.' '.L*). .#&(0G_ >&( 9(:$ G/L. (:.' :..# / 7*:$ L*.C: &% 7*:$ /)$*L*$>Y 1 7*:$ L*.C *: /
)&96&(#' $>6. &; M*.C $G/$ '*:67/>: / :.$ &; L*.C: L.%$*)/77>Y 1 =*:$1)$*L*$> *: / :(E $>6. &;
1)$*L*$> $G/$ ;/)*7*$/$.: E(*7'*#0 7*:$ L*.C:Y
FG*: 7.:: C*77 *#$%&'(). L*.C: *# 0.#.%/7 /#' ;&)(: 7*:$ )&96.#$: /#' &$G.% )).6$:
%.L&7L*#0 /%&(#' 7*:$:Y
A-#1$ FG. M*.C *: / o/L/ )7/:: $G/$ %.6%.:.#$: $G. E/:*) E(*7'*#0 E7&)^ ;&% (:.% *#$.%;/). )&96.#$:Y
"$ *: $G. 6/%.#$ )7/:: &; /77 &$G.% *#$.%/)$*L. S" )&96.#$: XC*'0.$:Z &; >&(% /667*)/$* 7*^.
E($$:_ $.V$ ;*.7':_ 7/E.7:YYY.$)YY "$ &))(6*.: / %.)$/#0(7/% /%./ $G. :)%..# /#' *: %.:6:*E7.
;&% '%/C*#0 /#' .L.#$ G/#'7*#0Y FG. A-#1f,%FM :(E)7/:: *: $G. E/:. )7/:: ;&% )4:18#+_ CG*)G
/%. *#L*:*E7. )$/*#.%: $G/$ G&7' &$G.% M*.C: X&% &$G.% M*.C`%&(6:Z /#' '.;*#. $G.*% 7/>&($
6%&6.%$*.:Y
http://developer.android.com/reference/android/view/ViewGroup.htmlhttp://developer.android.com/reference/android/view/ViewGroup.htmlhttp://developer.android.com/reference/android/view/ViewGroup.htmlhttp://developer.android.com/reference/android/view/ViewGroup.html
-
8/17/2019 Android Application Development E-Book
29/84
Android ATC © 2012 88
K$-&H A-#1$
177 &; $G. L*.C: *# / C*#'&C /%. /%%/#0.' *# / :*#07. $%..Y 5&( )/# /'' L*.C: .*$G.% ;%&9 )&'. &%
E> :6.)*;>*#0 / :..$ &; L*.C: *# q@= 7/>&($ ;*7.:Y FG.%. /%. 9/#> :6.)*/7*T.' :(E)7/::.: &; L*.C:
$G/$ /)$ /: )$%&7: &% /%. )/6/E7. &; '*:67/>*#0 $.V$_ *9/0.:_ &% &$G.% )$.#$Y
[#). >&( G/L. )%./$.' >&(% L*.C:_ >&( $>6*)/77> 9*0G$ #..' $& 6.%;&%9 :&9. &; $G. ;&77&C*#0Q
● 5#: M,%M#,:-#$@ ;&% .V/967. :.$$*#0 $G. $.V$ &; / 8#O:A-#1 Y FG. /L/*7/E7. 6%&6.%$*.:
/#' $G. 9.$G&': $G/$ :.$ $G.9 C*77 L/%> /9 $G. '*;;.%.#$ :(E)7/::.: &; L*.C:Y P&$.
$G/$ 6%&6.%$*.: $G/$ /%. ^#&C# /$ E(*7' $*9. )/# E. :.$ *# $G. q@= 7/>&($ ;*7.:Y
● 5#: D%9F$@ FG. ;%/9.C&%^ C*77 G/#'7.' 9&L*#0 ;&)(: *# %.:6:. $& (:.% *#6($Y F& ;&%).
;&)(: $& / :6.)*;*) L*.C_ )/77 ,#gF#$:.%9F$_`Y
● 5#: FM )-$:#,$@ M*.C: /77&C: >&( $& :.$ 7*:$.#.%: $G/$ C*77 E. #&$*;*.' CG.# :&9.$G*#0
.L.#$ G/66.#: $& $G. L*.CY H&% .V/967._ :&9. L*.C: 7*^. $G. r($$ C*77 7.$ >&( :.$ /
7*:$.#.% $& E. #&$*;*.' CG.# *$ *: )7*)^.'Y 5&( )/# %.0*:$.% :()G / 7*:$.#.% (:*#0
$#:L&=)-92"-$:#,_L&=)-92"-$:#,` Y
● 5#: ;-$-Q-)-:_ .*$G.% 6(%.7> $G%&(0G
o/L/ )&'._ &% E> /''*#0 *$ *# / q@= 7/>&($ ;*7.Y FG. 7/$$.% *: /7C/>: $G. %.)&99.#'.' 9.$G&'_
/#' )/# E. (:.' ;&77&C.' $G.:. :$.6:Q
, -%./$. / #.C 6%&3.)$_ $G.# &6.# $G. '.;/(7$ 7/>&($ (#'.% ,#$T)/
-
8/17/2019 Android Application Development E-Book
30/84
Android ATC © 2012 89
8 FG. L*:(/7 7/>&($ .'*$&% &6.#: *# $G. %*0G$ 6/#. &; U)7*6:.
I F& /'' / E($$ $& $G. 7/>&($_ '%/0 $G. r($$ )&96.#$ ;%&9 (#'.% .%,0 P-+H#:$
*# $G. 7.;$ 6/#._ $& *#:*'. $G. /)$*L*$> *# $G. %*0G$Y
N B/L. >&(% C&%^Y
R 4(# >&(% /667*)/$* *# $G. .9(7/$&% $& L*.C >&(% /''.' E($$Y
-
8/17/2019 Android Application Development E-Book
31/84
Android ATC © 2012 8:
List Views and List Activity
5&( )/# 9/#*6(7/$. 7*:$ L*.C: *# >&(% /667*)/$* *# . &; $C& C/>:Q
● S:*#0 =*:$1)$*L*$> + / :(E $>6. &; 1)$*L*$> $G/$ *: 9/'. (6 &; / :*#07. =*:$ L*.C >Y
● 1''*#0 / 7*:$ L*.C )&96.#$ $& >&(% &C# q@= 7/>&($ ;*7.Y
"; >&( /%. 67/##*#0 $& )%./$. /# /)$*L*$> $G/$ )$/*#: / 7*:$ L*.C >_ $G.# $G. ;*%:$ 9.$G&' *:
%.)&99.#'.' ;&% :*967*)*$>Y i&C.L.%_ *; =*:$ L*.C *: > . &; 9/#> )&96.#$: *# >&(%
/)$*L*$> $G.# >&( G/L. $& (:. $G. :.)' 9.$G&'Y
Using a ListActivity
=*:$1)$*L*$> *: / :(E+)7/:: &; 1)$*L*$> $G/$ ;./$(%.: / =*:$M*.C /: / $G. 6%*9/%> S"Y FG. ;&77&C*#0
:$.6: '.:)%*E. G&C $& L*.C / 7*:$ &; :$%*#0: (:*#0 =*:$1)$*L*$>Y
1 1;$.% >&( )%./$. / 6%&3.)$_ /'' / o/L/ )7/:: $G/$ .V$.#': =*:$1)$*L*$>_ $G. :/9. C/> >&(
/''.' /# 1)$*L*$> *# 6%.L*&(:7>Y FG. )&'. :G&(7' E. :*9*7/% $& $G*:Q
'()!*$ $!%++ "#$%&'()'%*%'# ,-&,./+ $%&'()'%*%'# + ,01,22*/,
'()!*$ 1"*/ -./012'1345.671 &2*168.&'2.)19'2'1: + +(',2;-./012'13&2*168.&'2.)19'2'1:
-
8/17/2019 Android Application Development E-Book
32/84
Android ATC © 2012 8;
2 Create a String array of element you want to display. Let’s assume we want to display a
7*:$ &; 1#'%&*' L.%:* #/9.:Q
static final String[] ANDROID_OS = new String[] {“Cupcake”, “Donut”, "Eclaire”, “Froyo”,
”GingerBread", “HoneyComb”, "Ice Cream Sandwich", "JellyBean" };
3 =*#^ >&(% /%%/> &; %/C '/$/ $& $G. 7*:$ L*.C (:*#0 /# 1'/6$.%Q 04,B'0,*$"),4%9/-3 *%%".*$"),4%C4&%!/5D9&6!,E"#$%&'$(
-
8/17/2019 Android Application Development E-Book
33/84
Android ATC © 2012 8<
1'/6$.%: /%. o/L/ )7/::.: (:.' *# 1#'%&*' BJK $& E*#' >&(% 6%.:.#$/$* 7/>.%
$& '/$/ :&(%).:Y FG.%. /%. '*;;.%.#$ :(E+)7/::.: &; 1'/$6.% '.6.#'*#0 $G.
$>6. &; '/$/ $& E. E&(#'_ 7*^. 1%%/>1'/6$.%_ -(%:&%1'/6$.%YYY.$)Y
Adding ListView
"# $G. 6%.L*&(: :.)$*_ >&( G/L. :..# G&C $& 6&6(7/$. / =*:$M*.C *#'*%.)$7> $G%&(0G $G. (:/0.
&; =*:$1)$*L*$>Y "# $G*: :.)$*_ C. C*77 /'' / =*:$M*.C $& / 7/>&($ &; / o/L/ )7/:: $G/$ .V$.#':
1)$*L*$> X%/$G.% $G/# =*:$1)$*L*$>ZY
1 =4:18# G"),
1'' / 7/>&($ ;*7. ;&% $G. 7*:$ *$.9 > (#'.% ,#$T)/
%.6%.:.#$: $G. 7/>&($ &; ./)G *$.9 *# $G. =*:$M*.CY -/77 *$ )-$:h%$]O0)
aiO0) L.%:*ks,YDs .#)&'*#0ks($;+Asib
a8#O:A-#1 V97#:Q/#'%&*'ksG$$6Q\\:)G.9/:Y/#'%&*'Y)&9\/6^\%.:\/#'%&*'s /#'%&*'Q7/>&($hC*'$Gks;*77h6/%.#$s
/#'%&*'Q7/>&($hG.*0G$ks;*77h6/%.#$s
/#'%&*'Q6/''*#0ks,D'6s
/#'%&*'Q$.V$B*T.ks8D:6s b
aT8#O:A-#1b
2 [6.# $G. %.:\7/>&($\9/*#h/)$*L*$>YV97_ $G.# /'' =*:$ M*.C )&96.#$ ;%&9 (#'.%
“Composite” category of the palette pane.
-
8/17/2019 Android Application Development E-Book
34/84
Android ATC © 2012 8=
3 B.$ $G. *' 6%&6.%$> &; $G. =*:$M*.C $& $G. 6%.;.%%.' #/9.Y F& )G/#0. / 6%&6.%$> *# /
C*dget in the layout visual editor, click on it, then a “properties” view will show up in
U)7*6:.Y =&&^ ;&% $G. *' 6%&6.%$> ;*.7'_ $G.# )G/#0. $& tp*'\7*:$M*.C[BY X E> '.;/(7$ $G.
L/7(. C*77 E. tp*'\7*:$M*.C,Z
4 -%./$. / o/L/ )7/:: $G/$ .V$.#': 1)$*L*$>_ $G.# 0.$ / %.;.%.#). $& $G. =*:$M*.C C*'0.$ >&(G/L. 3(:$ /''.' *# :$.6 IQ
public class ListFruitActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get a reference to the list view widget
ListView listVieww = (ListView) getElemenById(R.id.listViewOS);
}
5 -%./$. / B$%*#0 /%%/> &; 1#'%&*' [B L.%:* #/9.: >&( C/#$ $& '*:67/>Q
static final String[] ANDROID_OS = new String[] {“Cupcake”, “Donut”, "Eclaire”, “Froyo”,
”GingerBread", “HoneyComb”, "Ice Cream Sandwich", "JellyBean" };
-
8/17/2019 Android Application Development E-Book
35/84
-
8/17/2019 Android Application Development E-Book
36/84
Android ATC © 2012 8?
5F00/, &; $G. :$.6: >&( :G&(7' ;&77&C $& 6&6(7/$. / =*:$M*.CQ
, -%./$. / =*:$M*.C *#:$/#).Y
="+#K",E )"+#K",Ef
8 "#*$*/7*T. $G. *#:$/#).
H#:"-$:A-#1_` L[
D-&+A-#1^1'/6$.% /%%/>1'/6$.% k
D004:D54*#,0aO#0"%9bT #4(!e4%501"5`7`)4:18#`+"2*),c)"+#c"#,2c.e ,),2,%#+D004:U
N 1$$/)G $G. /'/6$.% $& $G. =*:$M*.C (:*#0Q
$#:"-$:*+/M:#,_/,,/&( )/# 9/^. .L.%> *$.9 *# $G. 7*:$ )7*)^/E7.
(:*#0Q
$#:L&C:#0=)-92"-$:#,_ L&C:#0=)-92"-$:#,_`kl`j
Methods to remember● 0.$=*:$M*.CXZ
● :.$=*:$1'/6$.%X 1%%/>1'/6$.% // Z
● 1%%/>1'/6$.%X-$.V$_ 7/>&($_ B$%*#0efZ
● :.$[#"$.9-7*)^=*:$.#.%X [#"$.9-7*)^=*:$.#.% &*)7Z
-
8/17/2019 Android Application Development E-Book
37/84
Android ATC © 2012 9@
Lesson 4: Intents and Intent filters
C&:,%+F9:-%&
FG. 1#'%&*' :>:$.9 (:.: 9.::/0.: $& )&99(#*)/$. E.$C..# *$: )&96.#$:Y FG.:. 9.::/0.*#;&%9 $G. :>:$.9 CG/$ $G. *::(*#0 )&96.#$ C/#$: $& '& *Y.Y *$: *#$.#$Y 1#'%&*' BJK 6%&L*'.:
$G. '.L.7&6.% $G*: /E*7*$> $G%&(0G $G. "#$.#$ )7/::Y
"# &$G.% C&%':_ *#$.#$: /%. / :*967. 9.::/0.+6/::*#0 ;%/9.C&%^Y $G/$ )/# E%&/')/:$ 9.::/0.:
:>:$.9+C*'. &% $& / $/%0.$ 1)$*L*$> &% B.%L*)._ :$/$*#0 /# *#$.#$* $& 6.%;&%9 /# /)$*Y
"#$.#$: /%. /7:& (:.' $& $%/#:;.% '/$/ E.$C..# '*;;.%.#$ )&96.#$ E> /$$/)G*#0 *$ $& $G.
9.::/0.Y FG*: 7.:: C*77 '*:)(:: '*;;.%.#$ $>6.: &; *#$.#$: /#' G&C $& (:. $G.9Y
C&:#&:$
"#$.#$: /%. (:.' ;&% *#$.%/)$* E.$C..# '*;;.%.#$ /#'%&*' )&96.#$:Y FG.> 07(.: :.6/%/$.
)&96.#$: *#$& /# *#$.%)#.)$.' :>:$.9Y WG.# / E($$ )7*)^ :$/%$: /# /)$*L*$> *Y.Y E%*#0: /
#.C /)$*L*$> $& $G. ;&%.0%&(#' /#' $G. )(%%.#$ /)$*L*$> 0&.: $& $G. E/)^0%&(#'_ *$ E/:*)/77> :.#':
$G. 1#'%&*' :>:$.9 / 9.::/0. $.77*#0 *$ &; *$: *#$.#$* :$/%$ /# /)$*L*$>Y H%&9 $G. 1#'%&*'
:>:$.9 6.%:6.)$*L._ $G.%. *: $C& $>6.: &; *#$.#$:Q .V67*)*$ /#' *967*)*$Y
ZOM)-9-: C&:#&:$
UV67*)*$ "#$.#$: :6.)*;> CG*)G )&96.#$ *$ C/#$: $& :$/%$Y FG.> E/:*)/77> $.77 $G. :>:$.9 CG.%.
;%&9 $G. 9.::/0. *: *::(.' /#' $& CG*)G )&96.#$ *Y.Y CG*)G /)$*L*$> &% :.%L*).Y "$ '&.: :& E>
:6.)*;>*#0 .V67*)*$7> $G. #/9. &; $G. )7/:: $& 7&/' /: / 6/%/9.$.% $& $G. "#$.#$ ):$%()$&%Y
FG. ;&77&C*#0 )&'. :/967. *: $/^.# ;%&9 *#:*'. /# /)$*L*$>Y "$ )%./$. /# "#:$/#). &; $G. "#$.#$
)7/::_ /#' :$/%$: /#&$G.% /)$*L*$>Q
"#$.#$ *#$.#$ k #.C "#$.#$X$G*:_ 1)$*L*$>FC&Y)7/::Zn
:$/%$1)$*L*$>X*#$.#$Zn
"# $G.:. 7*#.:_ $G. "#$.#$ ):$%()$&% :6.)*;*.: .V67*)*$7> CG*)G /)$*L*$> *: *#$.#': $& :$/%$_ E> 6%&L*'*#0 *$:
name “ActivityTwo.class”. You can think of the two parameter of the constructor, as the source and
'.:$*#/$* &; $G. 9.::/0._ CG.%. :U-$ %.;.%: $& $G. )(%%.#$ /)$*L*$>Y
-
8/17/2019 Android Application Development E-Book
38/84
Android ATC © 2012 97
r%*.;7>_ .V67*)*$ "#$.#$: /%. 9/*#7> (:.' $& :$/%$ /)$*L*$*.: *Y.Y &6.# / '*;;.%.#$ /667*)/$* :)%..# *# >&(%
/667*)/$*_ &% / :.%L*).Y
Implicit Intents
4/$G.% $G/# :6.)*;>*#0 $G. '.:$*#/$* )7/:: #/9._ *967*)*$ *#$.#$ > :6.)*;*.: /# 1)$*_ /#'
$G. (#'.%7>*#0 1#'%&*' :>:$.9 C*77 $%/#:7/$. $G/$ /)$* /#' :$/%$: $G. )&96.#$: $G/$ )/# './7 C*$G *$Y FG. ;&77&C*#0 $C& .V/967.: :G&C $C& *967*)*$ *#$.#$:
"#$.#$ *#$.#$ k #.C "#$.#$X"#$.#$Y1-F"[PhM"UW_ S%*Y6/%:.XsG$$6Q\\CCCY1#'%&*'/$)Y)&9sZZn
:$/%$1)$*L*$>X*#$.#$Zn
FG*: *#$.#$ :.#': / 9.::/0. C*$G $C& 6*.).: &; *#;&%9/$*Y FG. /)$* *$ :G&(7' 6.%;&%9
X1-F"[PhM"UWZ /#' $G. '/$/ *$ C/#$: $G. %.).*L.% $& 6%&).:: *Y.Y $G. (%7Y FG. 1#'%&*' :>:$.9
%.).*L.: $G. 9.::/0. /#' 7&&^: ;&% /)$*L*$*.: $G/$ )/# 6%&).:: $G*: /)$* /#' '/$/Y
1-F"[PhM"UW_
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(“tel:555+1234”));
:$/%$1)$*L*$>X*#$.#$Zn
FG*: *967*)*$ *#$.#$ :.#': $G. 1-F"[PhJ"1= C*$G / '/$/ S4" 9/'. &; / $.7.6G. #(9E.%Y FG.
1#'%&*' :>:$.9 C*77 7/(#)G *$: 6G. '*/7.% /#' /'' $G. 6G. #(9E.% :(667*.' $& $G. '*/7.% $&
E. %./'> ;&% '*/7*#0Y
Native Android Actions
"# $G. 6%.L*&(: :.)$*_ >&( :/C $C& .V/967.: &; #/$*L. 1#'%&*' /)$*:_ 1-F"[PhM"UW /#'
1-F"[PhJ"1=Y FG. ;&77&C*#0 *: / 7*:$ &; :&9. &; $G. #/$*L. /)$*: /L/*7/E7. /: :$/$*) :$%*#0
):$/#$: *# $G. "#$.#$ )7/::Y 5&( )/# (:. $G.9 CG.# )%./$*#0 *967*)*$ "#$.#$: $& :$/%$ 1)$*L*$*.:Y
*=8CLSh*S5PZ[ [6.#: /# 1)$*L*$> $G/$ G/#'7.: *#)&9*#0 )/77:Y -(%%.#$7> $G*: *:
G/#'7.' E> $G. #/$*L. 6G. '*/7.%Y
*=8CLSh6Z"Z8Z B$/%$: /# 1)$*L*$> $G/$ 7.$: >&( '.7.$. $G. .#$%> )(%%.#$7> :$&%.' /$
$G. '/$/ S4" 7&)/$*Y
*=8CLSh6C*" r%*#0: (6 / '*/7.% /667*)/$* C*$G $G. #(9E.% $& '*/7 6%.6&6(7/$.'
;%&9 $G. '/$/ S4"Y r> '.;/(7$_ $G*: /)$* *: G/#'7.' E> $G. #/$*L. 1#'%&*' '*/7.%Y
*=8CLShZ6C8 4.a(.:$: /# 1)$*L*$> $G/$ )/# .'*$ $G. '/$/ /$ $G. S4"Y
*=8CLShVC=7 =/(#)G.: / :(E+1)$*L*$> $G/$ 7.$: >&( 6*)^ /# *$.9 ;%&9 $G. S4" '/$/Y WG.# )7&:.'_ *$ :G&(7' %.$(%# / S4" $& $G. *$.9 $G/$ C/: 6*)^.'Y
*=8CLSh5Z*[=( =/(#)G.: $G. S" ;&% 6.%;&%9*#0 / :./%)GY B(667> $G. :./%)G $.%9
as a string in the Intent’s extras using the SearchManager.QUERY key.
*=8CLSh5ZS6 =/(#)G.: /# 1)$*L*$> $G/$ :.#': $G. :6.)*;*.' '/$/ X$G. %.)*6*.#$ #..':
to be selected by the resolved Activity). Use setType to set the Intent’s type as the
transmitted data’s mime type. The data itself should be stored as an extra using the key
UqF41hFUqF &% UqF41hBF4U1@ '.6.#'*#0 $G. $>6.Y
http://www.androidact.com/http://www.androidact.com/http://www.androidact.com/http://www.androidact.com/
-
8/17/2019 Android Application Development E-Book
39/84
Android ATC © 2012 98
*=8CLShACZP *: 9&:$ )&99 0.#.%*) /)$*Y "$ /:^: $G/$ $G. '/$/ :(667*.' *# $G.
Intent’s URI be viewed in the most reasonable manner. Different components will
G/#'7. $G*: /)$* '.6.#'*#0 $G. S4" :)G.9/ &; $G. '/$/ :(667*.'Y
*=8CLShPZ^h5Z*[=( [6.#: /# /)$*L*$> $G/$ 6.%;&%9: / W.E :./%)G E/:.' $G.
$.V$ :(667*.' *# $G. '/$/ S4"Y
6/:/ 8,/&$D#,
"$ *: L.%> 7*^.7> $G/$ >&( C*77 #..' $& $%/#:;.% :&9. '/$/ $& $G. /)$*L*$> >&( C/#$ $& :$/%$ $G%&(0G
/# "#$.#$Y 1#'%&*' BJK 6%&L*'.: $G*: /E*7*$> E> (:*#0 .V$%/:Y 5&( )/# /$$/)G '/$/ $& >&(% *#$.#$
by using Intent’s method MF:ZO:,/_` *# $G. )/77*#0 /)$*L*$> /#' 9.$G&' H#:ZO:,/_` *# $G.
)/77.' /)$*L*$>Y B(66&:. >&( C/#$ $& :.#' / :$%*#0 ;%&9 1)$*L*$>[#. $& 1)$*L*$>FC& CG.# *$
:$/%$:Y H*%:$ >&( 6($ $G. :$%*#0 /: .V$%/ *# $G. *#$.#$ ;%&9 1)$*L*$>[#.Y
"#$.#$ *#$.#$ k #.C "#$.#$X$G*:_ 1)$*L*$>FC&Y)7/::Zn
*#$.#$Y6($UV$%/X"#$.#$YUqF41hFUqF_ sP.C: ;&% >&(gsZn
P&$*). $G/$ 6($UV$%/XZ $/^.: $C& 6/%/9.$.%:Q $G. ;*%:$ *: / B$%*#0 ):$/#$ $G/$ /)$: /: / ^.>_ /#'
$G. :.)' *: $G. :$%*#0 '/$/ >&( C/#$ $& :.#'Y UV$%/: *# *#$.#$: C&%^ /: ^.>+L/7(. 6/*%:_ CG.%.
$G. ^.>: :.%L. /: / (#*a(. *'.#$*;*.% &; $G. :$%*#0 :.#$Y
FG.#_ $G. %.).*L*#0 :*'._ >&( %./' $G. .V$%/ (:*#0 H#:ZO:,/_`]
45.671 1T'02& M B1'8.'1.'3:;B1'UT'02&3: /# *#$.#$_ $G.%. *: $C& $>6.: &; C/>: $& )/77 $G/$ /)$*L*$>Q J*%.)$
)/77: &% :(E+/)$*L*$> )/77:Y
6-,#9: 9/))$
FG. .V/967.: *#$.#$: >&( G/L. :..# :& ;/% E%*#0: /# /)$*L*$> $& $G. ;&%.0%&(#'_ (:*#0
:$/%$1)$*L*$>XZ 9.$G&'Y
WG.# $G*: 9.$G&' *: (:.'_ $G. /)$*L*$> :$/%$.' *: *#'.6.#'.#$ /#' $G. )/77*#0 /)$*L*$> *: #&$
.V6.)$*#0 /#' '/$/ %.$(%#.' ;%&9 *$Y $:/,:*9:-;-: 1)$*L*$> &E3.)$Y
-
8/17/2019 Android Application Development E-Book
40/84
-
8/17/2019 Android Application Development E-Book
41/84
Android ATC © 2012 9:
"# 1)$*L*$>FC&_ >&( %.$(%# %.:(7$: E> &L.%%*'*#0 9.$G&' D-&-$U_` /#' *#:*'. *$ (:. 9.$G&'
$#:[#$F):_`Y 1#'%&*' :>:$.9 C*77 $G.# %.$(%# / )/77+E/)^ $& 9.$G&' %&*9:-;-:[#.Y
,L*100%61
'()!*$ 1"*/ S%.%&E3: +
!! =5$>'5$ &'%' )1%$1%
8.'1.' 62'2 M .,7 8.'1.'3:&( .V.)($. $G. ;&77&C*#0
:$/$.9.#$Q
N%#,%# "%#,%# g %,E N%#,%#TN%#,%#`D3VN_^cKN'!e J0"`*40+,T h $##*SAAEEE`D%501"5DV3`(12h UUf
5&( /%. *967*)*$7> $.77*#0 1#'%&*' $& 7&&^ (6 ;&% /77 /)$*L*$*.: $G/$ 6%&).:: $G. S%* CG*)G :$/%$:
with “http://” and expects ACTION_VIEW. By default, every Android system has a default
E%&C:.% C*$G )/# 6%&).:: $G*: *#$.#$Y FG/$ *: CG>_ .V.)($*#0 $G/$ 7*#. &; )&'. C*77 E%*#0 (6 $G.
C.E E%&C:.%Y
5&( )/# $.77 1#'%&*' :>:$.9 $& %.0*:$.% . &; >&(% /667*)/$* /)$*L*$*.: ;&% ).%$/*# /)$* /#'
'/$/_ :& $G/$ *$ C*77 E. 7/(#)G.' CG.#.L.% /# *967*)*$ *#$.#$ $G/$ 9/$)G.: $G.9 *: )/77.'Y
F& 9/^. . &; >&(% /)$*L*$*.: %.:6' $& /# *967*)*$ *#$.#$_ ;&77&C $G.:. :$.6:Q
, @&'*;> @/#*;.:$ ;*7.
/ 1'' b*#$.#$+;*7$.%c (#'.% $G. b/)$*L*$>c &; $G. /)$*L*$> >&( C/#$ $& %.0*:$.%Y
E 1'' b/)$*c_ b)/$.0&%>c /#' b'/$/c (#'.% *#$.#$+;*7$.% $/0
1MN"#$%&'()'%*%'#N>
1MNE''@N>
http://www.androidact.com/http://www.androidact.com/http://www.androidact.com/http://www.androidact.com/
-
8/17/2019 Android Application Development E-Book
42/84
Android ATC © 2012 9;
8 "# >&(% /)$*L*$> X@>=*:$1)$*L*$>Z 9/^. / )/77 $& H#:C&:#&:_`] FG*: C*77 %.$(%# /# *#:$/#).
of the intent, and allows you to get the intent’s data for processing.
8.'1.' %.'1.' M B1'8.'1.'3:@201X-38.'1.';(/X8LJGC8UD: MM d: +
^0% 62'2 M %.'1.';B1'K2'23:
-
8/17/2019 Android Application Development E-Book
43/84
Android ATC © 2012 9<
Lesson 5: Custom Views
Introduction
5&( G/L. :..# *# 6%.L*&(: 7.::: 9/#> M*.C: $G/$ )&9.: C*$G $G. 1#'%&*' ;%/9.C&%^Y FG.:./%. > / :(E:.$ &; / E*0 #(9E.% &; M*.C )7/::.: $G/$ /%. 6%&L*'.: ;&% (:. *#$.%/)$*: + /7:&
)/77.' C*'0.$:Y U/)G &; $G.:. L*.C: G/: / '.;/(7$ E.G/L*&% /#' (:.% *#$.%;/).Y i&C.L.%_
:&9.$*9.:_ >&(% /667*)/$* 9*0G$ %.a(*%. / :7*0G$7> '*;;.%.#$ L*.C: $G/$ /%. #&$ *#)7('.' *# $G.
E(*7$+*# L*.C:Y FG*: 7.::: :G&C: >&( G&C $& )%./$. >&(% &C# )(:$&9*T.' L*.C: $G/$ )/# E.
%.(:/E7.Y
6-DD#,#&: K$#$ %D =F$:%0-m#+ A-#1$
W*$G $G. /E*7*$> $& )%./$. >&(% &C# )(:$&9*T.' L*.C:_ $G. 1#'%&*' ;%/9.C&%^ 6%&L*'.: $G%..
'*;;.%.#$ $>6.: &; )(:$&9*T/$*:Q
, J%+-D< #O-$:-&H ;-#1$@ 5&( )/# )%./$. / '*;;.%.#$ $G.9. /#'\&% E.G/L*&% &; /# .V*:$*#0
L*.C 6%&L*'.' E> 1#'%&*' ;%/9.C&%^Y H&% .V/967._ >&( )/# )G/#0. $G. '.;/(7$
/66./%/#). &; $G. F.V$M*.C_ E> '%/C*#0 / '*;;.%.#$ $.V$ /#' E/)^0%&(#' )&7&%:n &% >&(
)/# )G/#0. $G. '.;/(7$ E.G/L*&% &; $G. F.V$M*.C E> /''*#0 / 7.;$+$&+%*0G$ :C*6.
;(#)$*/7*$> ;&% / F.V$M*.CY
8 =%0M%F&+ A-#1$@ -&9E*#. / 0%&(6 &; L*.C: *#$& / :*#07. L*.CY H&% .V/967._ >&(
9*0G$ #..' $& )%./$. / :*#07. L*.C $G/$ )$/*#: $C& $.V$ L*.C: + . /: / $*$7. &; /# /%$*)7.
C*$G 7/%0. ;$ /#' . E.7&C *$ /: / :(E$*$7. C*$G :9/77.% ;$Y FG.# >&( )/# (:. $G*: L*.C
*# / =*:$M*.C &; :$&%*.:Y
I S#1 ;-#1$@ -%./$. / $&$/77> #.C L*.C $G/$ %.:.9E7.: %./7 C&%7' &E3.)$n 7*^. / )&96/::
L*.C &% / L&7(9. ^#&EY
J%+-D< ZO-$:-&H A-#1$
"; >&( #..' / L*.C :*9*7/% $& / E(*7$+*# L*.C_ $G.# $G. :*967.:$ C/> *: $& 9&'*;> /# /7%./'> E(*7$+
*# L*.C *# $G. 1#'%&*' ;%/9.C&%^Y "; $G.%. *: / )&96.#$ $G/$ *: /7%./'> L.%> :*9*7/% $& CG/$
>&( C/#$_ >&( )/# :*967> .V$.#' $G/$ )&96.#$ /#' &L.%%*'. $G. E.G/L*&% /#' /66./%/#). $G/$
>&( C/#$ $& )G/#0.Y
WG.# >&( .V$.#' 1#'%&*' M*.C )7/::_ >&( /%. E/:*)/77> )%./$*#0 / $&$/77> )(:$&9*T.' L*.CYi&C.L.%_ E> .V$.#'*#0 / E(*7$+*# L*.C X/ L*.C $G/$ *$:.7; .V$.#': ;%&9 $G. M*.C )7/::Z >&( )/#
(:. $G. /7%./'> E(*7$+*# E.G/L*&% /#' /66./%/#). *; *$ 9/$)G.: CG/$ >&( #..' /#' 9&'*;> $G.
part that doesn’t.
5:#M Q< 5:#M
-
8/17/2019 Android Application Development E-Book
44/84
Android ATC © 2012 9=
FG. ;&77&C*#0 :.)$* :G&C: >&( G&C $& 9&'*;> 1#'%&*' F.V$M*.C $& :(*$. >&(% #..':Y W. C*77
)/77 $G. L*.C JF.V$M*.CQ
, -%./$. / #.C o/L/ )7/:: $G/$ .V$.#': F.V$M*.CY "$ .V$.#': 8#O:A-#1 _ CG*)G *: $G. M*.C
C. G/L. )G&:.# $& )(:$&9*T. *# $G*: )/:.Y WG.# C. /%. ;*#*:G.'_ $G. #.C )7/:: C*77 E. /E7.$& :(E:$*$($. ;&% / #&%9/7 8#O:A-#1 L*.CY
MFQ)-9 $:/:-9 9)/$$ J:_ $G. :(6.% *: )/77.' ;*%:$Y H(%$G.%9&%._ $G*: *: #&$ / '.;/(7$ ):$%()$&%_ E($ /
6/%/9.$.%*T.' .Y FG. F.V$M*.C *: )%./$.' C*$G $G.:. 6/%/9.$.%: CG.# *$ *: *#;7/$.'
;%&9 /# q@= 7/>&($ ;*7._ $G(:_ &(% ):$%()$&% #..': $& E&$G $/^. $G.9 /#' 6/:: $G.9 $&
$G. :(6.%)7/:: ):$%()$&% /: C.77Y
6(E7*) @>F.V$M*.CX-$.V$ )$.V$_ 1$$%*E($.B.$ /$$%:Z j
:(6.%X)$.V$_ /$$%:Zn
YYY
l
I L;#,,-+# J#:U%+$
F& *967.9.#$ / )(:$&9 L*.C_ >&( :G&(7' (:(/77> &L.%%*'. :&9. &; $G. :$/#'/%' 9.$G&':
$G/$ $G. ;%/9.C&%^ )/77: /77 L*.C:Y r($ >&( )/# 3(:$ &L.%%*'.
J%/CX/#'%&*'Y0%/6G*):Y-/#L/:ZY "# $G*: .V/967._ C. C/#$ $& )G/#0. $G. /66./%/#). &;
F.V$M*.C_ :& C. > #..' $& &L.%%*'. %&6,/1_` $& 9/^. &(% &C# '%/C*#0 /#'
/66./%/#). )G/#0.:Y =/$.% *# $G*: 7.::_ C. C*77 :.. G&C /#' CG/$ $& '%/C *# $G*:
9.$G&'Y
t[L.%%*'.
6%&$.)$.' L&*' J%/CX-/#L/: )/#L/:Z j
…
…
…
:(6.%Y'%/CX)/#L/:Zn
l
-
8/17/2019 Android Application Development E-Book
45/84
Android ATC © 2012 9>
FG. :(6.%YJ%/CXZ 9.$G&' *: )/77.' E.;&%. $G. 9.$G&' .#':Y FG. :(6.%)7/:: 9.$G&'
:G&(7' E. *#L&^.'_ E($ *# $G*: )/:._ C. '& *$ /$ $G. .#' /;$.% C. G/L. 9/'. $G.
/66./%/#). )G/#0.: C. C/#$ $& *#)7('.Y
N K$# :U# =F$:%0 =%0M%&:
W. #&C G/L. &(% )(:$&9 L*.CY 5&( #&C #..' $& (:. *$ *# >&(% /667*)/$*Y 5&( )/# '& :&
(:*#0 / 7/>&($ %.:&(%).Y -%./$. / 7/>&($ (#'.% ,#$T)/F.V$M*.C *$.9Y
-
8/17/2019 Android Application Development E-Book
46/84
-
8/17/2019 Android Application Development E-Book
47/84
-
8/17/2019 Android Application Development E-Book
48/84
Android ATC © 2012 :7
my_text_view_list.xml
#G'1T'G*%1AG7%&'N 2.60-%6b72#-5'GA%6'EMN>2')EG@201.'N 2.60-%6b72#-5'GE1%BE'MNA02@G)-.'1.'N >
& M .1A (002#$%&' 3:<%'1>&;2663N8'1> VN:<%'1>&;2663N8'1> [N:<%'1>&;2663N8'1> ?N:<S%.27 (002#(62@'10 22 M .1A (002#(62@'10 3'E%&O
F;72#-5';>#G'1T'G*%1AO %'1>&:<>#X1T'C%1A$%&'C%1A M 3$%&'C%1A: S%.6C%1A4#863F;%6;>#G'1T'G*%1AG7%&':<>#X1T'C%1A$%&'C%1A;&1'(62@'10322:<
==
-
8/17/2019 Android Application Development E-Book
49/84
Android ATC © 2012 :8
Lesson 6: Dialogs and Toasts
Dialogs
J*/7&0: /%. :9/77 C*#'&C: $G/$ /66./% *# ;%$ &; /# /)$*L*$>Y FG.> &))(6> > 6/%$ &; $G.:)%..# /#' )/# E. 6/%$*/77> $%/#:6/%.#$Y FG. 1)$*L*$*.: E.G*#' $G.9 /%. .*$G.% '*99.' &%
E7(%%.'Y
1 '*/7&0 *: 6/%$ &; /# /)$*L*$>_ /#' *$: 7*;.+)>)7. *: )$%&77.' E> $G. /)$*L*$> $G/$ *: E(*7$ *#Y B&
$G.%. *: #& #..' $& /'' *$ $& $G. 9/#*;.:$Y J*/7&0: /%. /# *96&%$/#$ 6/%$ &; /# 1#'%&*'
application. They are used to show messages to user, show latest updates, take user’s input YYY.$)Y
F& /)G*.L. $G*: 6(%6&:._ >&( )/# (:. . &; $G. ;&77&C*#0 $.)G#*a(.:Q
1 Use Android’s built+*# J*/7&0 :(E+)7/::.:Q FG.:. /%. J*/7&0 E&V.: 6%&L*'.' E> 1#'%&*'
BJKY FG.> /77 .V$.#' $G. J*/7&0 )7/::
2 -%./$. /# 1)$*L*$> /#' 9/^. *$ E.G/L. /: / J*/7&0 E> )G/#0*#0 *$: $G.9.Y3 F&/:$Q FG*: *: / :6.)*/7 ^*#' &; 9.::/0. E&V.: $G/$ :G&C (6 ;&% / :G&%$ 6.%*&' &; $*9.
$G.# '*:/66./%Y F&/:$: are not necessarily attached to an activity’s lifecycle. That’s why
$G.> 6%.;.%%.' $& E. (:.' C*$G E/)^0%&(#' :.%L*).:Y
Dialog sub-classes
1#'%&*' 6%&L*'.: / :.$ &; J*/7&0 :(E+classes that you’re recommended to use. These are:
● F!,2&G*%!"# 1 '*/7&0 $G/$ )/# 9/#/0. T.%&_ ._ $C&_ &% $G%.. E($$:_ /#'\&% / 7*:$ &;
:.7.)$/E7. *$.9: $G/$ )/# *#)7('. )G.)^E&V.: &% %/'*& E($$:Y FG. 17.%$J*/7&0 *: )/6/E7.
&; ):$%()$*#0 9&:$ '*/7&0 (:.% *#$.%;/).: /#' *: $G. :(00.:$.' '*/7&0 $>6.Y B..=,#/:-&H /& *)#,: 6-/)%H :.)$* 7/$.% *# $G*: 7.::Y
● H2"#2,++G*%!"# 1 '*/7&0 $G/$ '*:67/>: / 6%&0%.:: CG..7 &% 6%&0%.:: E/%Y r.)/(:. *$d:
/# .V$.#:* &; $G. 17.%$J*/7&0_ *$ /7:& :(66&%$: E($$:Y B.. =,#/:-&H / V,%H,#$$
6-/)%H 7/$.% *# $G*: 7.::Y
● G%&,H*$3,2G*%!"# 1 '*/7&0 $G/$ /77&C: $G. (:.% $& :.7.)$ / '/$.Y
● ;*4,H*$3,2G*%!"# 1 '*/7&0 $G/$ /77&C: $G. (:.% $& :.7.)$ / $*9.Y
Creating dialogs with user-defined layout
17$G&(0G $G. :.$ &; J*/7&0 :(E+)7/::.: /%. :(;;*)*.#$ $& 6%&L*'. $G. #&$*;*)/$* #.).::/%> $& $G.
(:.%_ >&( 9*0G$ #..' $& )%./$. >&(% &C# '*/7&0Y i.%. *: G&C $& '& *$Q
● Create layout resource, in the res/layout folder. Let’s call the file 5"4)19cF",E`>2)
● -%./$. / L/%*/E7. &; $>6. J*/7&0 /#' *#:$/#$*/$. *$Y
● -/77 +,#31%#,%#K",ET7`)4:18#`5"4)19cF",EU ;&% $G. '*/7&0
● -/77 :G&CXZ
-
8/17/2019 Android Application Development E-Book
50/84
Android ATC © 2012 :9
7!/+) A'"3&K $'"3&K O /-3 A'"3&K9*#$%&'$*Z8*+,'-',.(&6!,:/
$'"3&K(04,Z',349PA'"3&K Z',34P:/
$'"3&K(04,8,4#,L'4J9&($2/%/9:YH=1`hr=S4hrUi"PJ_W*#'&C@/#/0.%Y=/>
&($2/%/9:YH=1`hr=S4hrUi"PJZn
C*#'&CY:.$=/>&($X=/>&($2/%/9:YH"==h214UPF_ =/>&($2/%/9:Y W412h-[PFUPFZn
F& 9/^. $G. /)$*L*$> '*99.' *#:$./' &; E7(%%.'_ :*967> %.67/).
]'#$&J5"#"K4%(B".&2,@"%"?0(SB*TF1B^
-
8/17/2019 Android Application Development E-Book
51/84
Android ATC © 2012 ::
Creating an Alert Dialog
17.%$J*/7&0 *: / J*/7&0+E/:.' )7/:: $G/$ $/ .̂: (6 $& $G%.. E($$: /#' '*:67/>: / 9.::/0.Y H&77&C
$G. ;&77&C*#0 :$.6: $& )%./$. /# 17.%$J*/7&0Y
● UV$.#': J*/7&0 )7/::
● -%./$. /#' *#:$/#$*/$. /#' *#:$/#). &; 17.%$J*/7&0Yr(*7'.%Q D),0#R"4)19`W8")5,0 4),0#R"4)19 g %,E D),0#R"4)19`W8")5,0T(1%#,>#Uf
● 1'' %.a(*%.' E($$:Q
○ 4),0#R"4)19Y:.$2&:*$*L.r($$
○ 4),0#R"4)19Y:.$P.0/$*L.r($$
● BG&C '*/7&0
○ /'Y:G&CXZ
FG. ;&77&C*#0 )&'. :#*66.$ E(*7': /# /7.%$ '*/7&0 /#' '*:67/>: *$Y P&$*). $G/$ $G. )&'. /'': /#
-7*)^ 7*:$.#.% $& E&$G E($$:Y [#. )7&:.: $G. '*/7&0 *$:.7; CG.# )7*)^.' /#' &$G.% )7&:.: $G.
CG&7. /)$*L*$> 1)$*L*$> (:*#0 9.$G&' G"%"+$TUY
*34%,A'"3&K "34%,A O /-3 *34%,A'"3&K(12'3$4%9&6!,:(+%4",49:/
"34%,A(04,Z',349P1"+QYP:/
"34%,A(04,5400"K49P*%4 .&2 02%4 .&2 J"#, ,& 4[',YP:/
"34%,A(04,12,,*34%,A'"3&K(1^ZZIHFHRT*Z=LRE PHIPE /-3 I#83'+QB'0,4#4%9: 6
7I-4%%'$4
#'()!* 2$!0 S'+Q9A'"3&K=#,4%\"+4 $'"3&KE !/& JW'+W: 6
$'"3&K(+"#+439:/
;
;:/
"34%,A(04,12,,*34%,A'"3&K(1^ZZIHF@I>=Z=LRE P_R>PE /-3 I#83'+QB'0,4#4%9: 6
7I-4%%'$4
#'()!* 2$!0 S'+Q9A'"3&K=#,4%\"+4 $'"3&KE !/& JW'+W: 6
99*+,'-',.:+,4[,:(\'#'0W9:/
;
;:/
"34%,A(0W&J9:/
-
8/17/2019 Android Application Development E-Book
52/84
Android ATC © 2012 :;
FG. ;&77&C*#0 *: $G. &($6($ &; $G. )&'. /E&L.Y
Creating a Progress Dialog
FG*: *: / :6.)*/7 '*/7&0 $G/$ :G&C: / 6%&0%.:: *#'*)/$&% /#' $.V$ 9.::/0. ;&% $G. (:.%Y "$ G/: $G.
;&77&C*#0 ;./$(%.:Q
● UV$.#': J*/7&0 )7/::
● S:.' $& *#;&%9 $G. (:.% $G/$ / $*9.+):(9*#0 6%&).:: *: (#'.%0&*#0Y
● "$ :G&C / 6%&0%.:: E/% E.7&C / 9.::/0. &% / /# *#'.;*#*$. CG..7 X:6*##.%Z #.V$ $& $G.
9.::/0.Y
● ProgressDialog is an extension of AlertDialog. That’s why it also supports up to three E($$: C*$G $G. ;&77&C*#0 *':Q
○ :!+)$5(1^ZZIHFHRT*Z=LR
○ :!+)$5(1^ZZIHF@I>=Z=LR ○ :!+)$5(1^ZZIHFHR^Z
-
8/17/2019 Android Application Development E-Book
53/84
Android ATC © 2012 :<
;!/0$3 J'#$&J O $'"3&K(K4,]'#$&J9:/
@%&K%400A'"3&K )%&K%400A O /-3 @%&K%400A'"3&K9&6!,:/
)%&K%400A(04,@%&K%400>,.349@%&K%400A'"3&K(>Z_BRF>@=HHR
-
8/17/2019 Android Application Development E-Book
54/84
Android ATC © 2012 :=
● F& )G/#0. $G. CG..7 $& / 6%&0%.:: E/%_ %.67/). $G. ;&77&C*#0 7*#. *# $G. )&'. /E&L.Q
○ )%&K%400A(04,@%&K%400>,.349@%&K%400A'"3&K(>Z_BRF>@=HHR,.349@%&K%400A'"3&K(>Z_BRFUI&( C*77 0.$ $G. ;&77&C*#0 '*/7&0Q
5&( )/# /'' $C& 9&%. E($$ $& $G. 6%&0%.:: '*/7&0 (:*#0 :!+)$5(1^ZZIHF@I>=Z=LR /#'
:!+)$5(1^ZZIHFHR^Z&( )/# *#:$./' (:. /# 1)$*L*$> ;&% $G/$ 6(%6&:. /#' :$>7. *$ $& 9/^. *$ /66./% /: /
J*/7&0Y
-
8/17/2019 Android Application Development E-Book
55/84
Android ATC © 2012 :>
FG. :*967.:$ C/> $& '& :& *: E> /667>*#0 $G. '*/7&0 $G.9. $& >&(% 1)$*L*$> *# $G. 9/#*;.:$ ;*7.Y
FG. ;&77&C*#0 q@= :#*66.$ 0&.: *#$& >&(% 9/#*;.:$ /#' $G.# >&(% /)$*L*$> C*77 /66./% 7*^. /
'*/7&0Q
C/> $& '.7*L.% :$/$(: 9.::/0.: $& (:.%: C*$G&($ '*:%(6$*#0 $G. )(%%.#$
C&%^*#0 /)$*L*$>_ E.)/(:. (#7*^. 17.%$ J*/7&0: $G.> '& #&$ $/^. ;&)(: /C/> ;%&9 $G. 1)$*L*$>Y
They’re suitable for displaying informative messages that don’t need too much attention. For
.V/967._ *$ )/# E. (:.' $& $.77 $G. (:.% $G/$ / '&C#7&/' G/: )&967.$.'_ &% /# .9/*7 *: :.#$Y
F&/:$: ;/'. /C/> /($&9/$*)/77> /;$.% / ).%$/*# 6.%*&' &; $*9.Y J(. $& $G*: #/$(%._ *$ 9/>
not be guaranteed that a user will read the message. That’s why toasts are not used for critical
9.::/0.:Y
F& )%./$. / $&/:$ > / :*#07. 7*#. &; )&'. *: #..'.'Q
Z&"0,(?"Q4Z4[,9&6!,E P_&2% $&J#3&"$ W"0 %402?4$(PE Z&"0,(BRHTZUFBIHT:(0W&J9:/
FG. ;*%:$ 6/%/9.$.% &; 0/2#8#O:_` defines the context in which it’s displayed. The second is
$G. 9.::/0. E&'> /#' $G. 7/:$ /%0(9.#$ *: /#' *#$ $G/$ :6.)*;*.: G&C 7 $G. F&/:$ :G&(7' :$/>
:)%..#Y [#7> F&/:$Y=UP`Fih=[P` &% F&/:$Y=UP`FihBi[4F /%. /)).6$.' L/7(.:Y 1#>
#+, L/7(. *: ):*'.%.' /: / F&/:$Y=UP`FihBi[4F_ /#' , *: F&/:$Y=UP`Fih=[P`Y
1 F&/:$ 9.::/0.
-
8/17/2019 Android Application Development E-Book
56/84
Android ATC © 2012 :?
Customizing Toasts
17$G&(0G :G&C*#0 / $.V$ 9.::/0. *#:*'. F&/:$ *: :(;;*)*.#$ *# 9&:$ :*$(/$*:_ E($ >&( 9*0G$
#..' $& )(:$&9*T. >&(% &C# F&/:$Y F& '& $G/$_ >&( )/# :.$ $G. 7/>&($ &; >&(% &C# '.:*0# /#'\&%
change the Toast’s screen position + E> '.;/(7$ / F&/:$ *: :G&C# *# $G. E&$$&9 &; $G. :)%..#Y
F& )(:$&9*T. / F&/:$_ ;&77&C $G.:. :$.6:Q
1 -%./$. /#' *#:$/#$*/$. / F&/:$ &E3.)$ (:*#0 $G. 9/^.F.V$XZ :$/$*) 9.$G&'Z&"0, ,&"0, O Z&"0,(?"Q4Z4[,9&6!,E PU433& ]&%3$ \%&? Z&"0,bPEZ&"0,(BRHTZUFBIHT:/
2 r(*7' $G. '.:*%.' 7/>&($ *#:*'. $G. 3/L/ )&'.QY
a -%./$. / 7/>&($ &E3.)$B'#4"%B".&2, 33 O /-3 B'#4"%B".&2,9+,4[,:/
b -%./$. #..'.' L*.C:Z4[,L'4J ,- O /-3 Z4[,L'4J9+,4[,:/
,-(04,Z4[,9P5400"K4((((P:/
3 1'' $G. )%./$.' 7/>&($ (:*#0 9.$G&' :.$M*.CXZ,&"0,(04,L'4J933:/
4 BG&C $G. F&/:$,&"0,(0W&J9:/
F&/:$ )7/:: '&.: #&$ G/L. 9.$G&' $#:=%&:#&A-#1_`_ E($ %/$G.% $G. 9.$G&'
$#:A-#1_`] So you can’t inflate / 7/>&($ ;%&9 /# V97 %.:&(%).Y
FG. ;&77&C*#0 )&'. :#*66.$ )%./$.: /#' '*:67/>: / )(:$&9*T.' F&/:$Y FG. $&/:$ )$/*#: /
message and a button, and it’s displayed at the top of the screen.
Z&"0, ,&"0, O Z&"0,(?"Q4Z4[,9&6!,E P PEZ&"0,(BRHTZUFBIHT:/
,&"0,(04,T%"-',.9T%"-',.(8RHZR
-
8/17/2019 Android Application Development E-Book
57/84
Android ATC © 2012 ;@
12,, V,# O /-3 12,,+,4[,:/
V,#(04,Z4[,9P Id P:/
V,#(04,@"$$'#K9GcE GcEGcEGc:/
33("$$L'4J9,-EB".&2,@"%"?0(]
-
8/17/2019 Android Application Development E-Book
58/84
Android ATC © 2012 ;7
Methods to remember
● 8%/$:]0/2#8%/$:_`
● FG. ;&77&C*#0 9.$G&': *# )7/:: J*/7&0
○ $#:8-:)#_`
○ $U%1_`
○ 9/&9#)_`
● FG. ;&77&C*#0 9.$G&': ;&% / E(*7$+*# J*/7&0 :(E)7/:: X2%&0%.::J*/7&0_ 17.%$J*/7&0_YYY.$)YZ
○ $#:J#$$/H#_`
○ $#:^F::%&_`
-
8/17/2019 Android Application Development E-Book
59/84
Android ATC © 2012 ;8
Lesson 7: More UI - Options Menu,
Context Menu, and WebView
Introduction
@.#(: /%. )&99 (:.% *#$.%;/). )&96.#$: (:.' $& 6%.:.#$ (:.% /)$*: /#' &$G.% &6$*: *#
>&(% /)$*L*$*.:Y FG. 9.#( $G/$ 6&6: (6 CG.# the user presses the “Menu” button is called
&6$*: 9.#( /#' *$ :(66&%$: *):Y U/)G /)$*L*$> *# /# /667*)/$* )/# 0.$ *$: &C# &6$*:
9.#(Y
B(E9.#(: /%. /::&)*/$.' C*th menu items. Each item in the options menu can get it’s own sub+
9.#(_ CG*)G *: / 7*:$ &; 9.#( *$.9: :G&C# *# / ;7&/$*#0 C*#'&CY
Menus 5&( )/# E(*7' / 9.#( '*%.)$7> ;%&9 o/L/ )&'. &% ;%&9 / %.:&(%). ;*7. (#'.% 0,+A2,%8`
Building a menu from Java code
F& E(*7' / 9.#( ;&% /# /)$*L*$> ;%&9 o/L/ )&'._ ;&77&C $G.:. :$.6:Q
1 "#:*'. $G. /)$*L*$> )7/::_ &L.%%*'. $G. )/77+E/)^ 9.$G&'
%&=,#/:#LM:-%&$J#&F_J#&F`
2 H&% ./)G *$.9 >&( C/#$ $& /'' $& $G. 9.#( )/77 /++_` 9.$G&'Y
○ @.#(Y/''XZ $/^.: N /%0(9.#$:_ `%&(6 "J_ 9.#( *$.9 *' X*96&%$/#$ ;&% .L.#$
G/#'7*#0Z_ &%'.%_ /#' $.V$Y
3 -(:$&9*T. $G. 9.#( *$.9 E> )/77*#0 @.#("$.9 9.$G&': 7*^. :.$BG&%$)($XZ_
:.$")ZYYY.$)Y
4 1::*0# ;(#)$*/7*$> $& $G. @.#("$.9_ .*$G.% E> )/77*#0 $#:C&:#&:_` &% &L.%%*'*#0 $G.
)/77E/)^ 1)$*L*$> 9.$G&' %&LM:-%&$C:#05#)#9:#+_`
The following code snippet creates a menu in an Activity and adds two items to it, “Settings” and
“Exit”.
712-%%!0-
#'()!* ($$)-+/ %4",4I),'6#29?-/' ?4#2: 6
,'#-%(%4",4I),'6#29?4#2:/
!! #+&$(& ()& 0&3. /(&0 $3' B&&> $ +&-&+&35& (, /(1
?-/'@&-" ?4#2=,4?G O ?4#2("$$9?-/'(HIHRE ?-/'(S=ZE ?-/'(HIHREP>4,,'#K0P:/
?-/'@&-" ?4#2=,4?f O ?4#2("$$9?-/'(HIHRE ?-/'(S=ZgGE ?-/'(HIHRE PR[',P:/
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuItem.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuItem.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuItem.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuItem.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuItem.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/MenuItem.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/awt/Menu.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/Override.html
-
8/17/2019 Android Application Development E-Book
60/84
Android ATC © 2012 ;9
%-&'%/ &%'-/
;
P&$*). $G/$ $G. 9.$G&' 0#&F]/++_` %.$(%#: / %.;.%.#). $& $G. #.C7> /''.'
9.#( *$.9 /#' $/^.: ;&(% /%0(9.#$:Q
1 FG. 0%&(6 *' $G/$ 0%&(6: *$.9: *# . )/$.0&%>Y
2 FG. 9.#( *$.9 *' + / (#*a(. *'.#$*;*.% (:.' ;&% .L.#$ G/#'7*#0Y
3 FG. &%'.% C*$G*# / 0%&(6 CG*)G )/# E. (:.' $& )G/#0. &%'.% &;
/66./%/#). *# / 9.#(Y
4 FG. $.V$ $& :G&C (6 *# $G. 9.#(Y
B*#). &6$*: 9.#( :(66&%$: *):_ >&( )/# :.$ /# *) (:*#0 9.$G&' $#:C9%&_` C*$G / %.:&(%).
*' &; /# *9/0. $G/$ >&( G/L. $& /'' $& ;&7'.% 0,+A504E4C),
?4#2=,4?G(04,=+
-
8/17/2019 Android Application Development E-Book
61/84
Android ATC © 2012 ;:
Building a menu from a resource file
F& E(*7' /# &6$*: 9.#( ;%&9 / %.:&(%). ;*7._ ;&77&C $G.:. :$.6:Q
1 -%./$. / #.C q@= ;*7. (#'.% ;&7'.% %.:\9.#(Y "; ;&7'.% 2,%8 *: #&$ ;&(#'_ )%./$. $G.
;&7'.%Y
2 [6.# $G. ;*7. *# U)7*6:. $& &6.# $G. 9.#( %.:&(%). .'*$&%Y
3 1'' $G. %.a(*%.' 9.#( *$.9: E> )7*)^*#0 *++]]]_ /#' :.7.)$*#0 C:#0 ;%&9 $G. 6&6 (6
C*#'&CY
4 FG.# ;*77 *# $G. %.a(*%.' /$$%*E($.: ;&% $G. #.C *$.9Y @&:$ *96&%$/#$7>_ ;*77 *# $G. *$.9 *'
/#' $G. $*$7. ;*.7':Y
-
8/17/2019 Android Application Development E-Book
62/84
Android ATC © 2012 ;;
FG. "' ;*.7' *# $G. /$$%*E($.: ;&%9 /E&L. *: .a(*L/7.#$ $& $G. $G*%:$ 6/%/9.$.% &;9.$G&' /++_` .V67/*#.' E.;&%.Y FG*: *: / )%()*/7 /$$%*E($. $& G/#'7. .L.#$ /9.#( *$.9Y 4./' section “Handle Select Events” 7/$.% *# $G*: 7.:: ;&% 9&%.*#;&%9/$*Y
5 "#:*'. $G. /)$*L*$> )7/::_ &L.%%*'. $G. )/77+E/)^ 9.$G&'
%&=,#/:#LM:-%&$J#&F_J#&F`
6 Call Activity’s method H#:J#&FC&D)/:#,_`]-&D)/:#_,#$%F,9#C+` CG.%. %.:&(%)."' *:
$G. #/9. &; $G. #.C7> )%./$.' q@= ;*7.Y
t[L.%%*'.
6(E7*) E&&7./# -%./$.[6$*:@.#(X@.#( 9.#(Z j
@.#("#;7/$.% *#;7/$.% k 0.$@.#("#;7/$.%XZn
*#;7/$.%Y*#;7/$.X4 Y9.#(Y/)$*L*$>h9/*#_ 9.#(Zn
%.$(%# $%(.n
l
http://developer.android.com/reference/android/app/Activity.html#getMenuInflater()http://developer.android.com/reference/android/app/Activity.html#getMenuInflater()http://developer.android.com/reference/android/app/Activity.html#getMenuInflater()http://developer.android.com/reference/android/app/Activity.html#getMenuInflater()http://developer.android.com/reference/android/app/Activity.html#getMenuInflater()
-
8/17/2019 Android Application Development E-Book
63/84
-
8/17/2019 Android Application Development E-Book
64/84
-
8/17/2019 Android Application Development E-Book
65/84
-
8/17/2019 Android Application Developmen