Android Application Development E-Book

download Android Application Development E-Book

of 84

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 

    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 

  • 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 

    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