• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=Notepad Tutorial
2parent.title=Tutorials
3parent.link=../../browser.html?tag=tutorial
4@jd:body
5
6
7<p>This tutorial on writing a notepad application gives you a &quot;hands-on&quot; introduction
8to the Android framework and the  tools you use to build  applications on it.
9Starting from a preconfigured project file, it guides you through the process of
10developing a simple notepad application and provides concrete examples of how to
11set up the project,  develop the application logic and user interface, and then
12compile and run the application. </p>
13
14<p>The tutorial presents the application development as a set of
15exercises (see below), each consisting of several steps. You should follow
16the steps in each exercise to gradually build and refine your
17application. The exercises explain each step in detail and provide all the
18sample code you need to complete the application. </p>
19
20<p>When you are finished with the tutorial, you will have created a functioning
21Android application and will have learned many of the most important
22concepts in Android development. If you want to add more complex features to
23your application, you can examine the code in an alternative implementation
24of a Note Pad application, in the
25<a href="{@docRoot}resources/samples/index.html">Sample Code</a> section. </p>
26
27
28<a name="who"></a>
29<h2>Who Should Use this Tutorial</h2>
30
31<p>This tutorial is designed for  experienced developers, especially those with
32knowledge of the Java programming language. If you haven't written Java
33applications before, you can still use the tutorial, but you might need to work
34at a slower pace. </p>
35
36<p>Also note that this tutorial uses
37the Eclipse development environment, with the Android plugin installed. If you
38are not using Eclipse, you can  follow  the exercises and build the application,
39but you will need to determine how to accomplish the Eclipse-specific
40steps in your environment. </p>
41
42<a name="preparing"></a>
43<h2>Preparing for the Exercises</h2>
44
45<p>The tutorial  assumes that you have some familiarity with basic Android
46application concepts and terminology. If you are not, you
47should read <a href="{@docRoot}guide/topics/fundamentals.html">Application
48Fundamentals</a> before continuing. </p>
49
50<p>This tutorial also builds on the introductory information provided in the
51<a href="{@docRoot}resources/tutorials/hello-world.html">Hello World</a>
52tutorial, which explains how to set up your Eclipse environment
53for building Android applications. We recommend you complete the Hello World
54tutorial before starting this one.</p>
55
56<p>To prepare for this lesson:</p>
57
58<ol>
59  <li>Download the <a href="codelab/NotepadCodeLab.zip">project
60      exercises archive (.zip)</a>.</li>
61  <li>Unpack the archive file to a suitable location on your machine.</li>
62  <li>Open the <code>NotepadCodeLab</code> folder.</li>
63</ol>
64
65<p>Inside the <code>NotepadCodeLab</code> folder, you should see six project
66files: <code>Notepadv1</code>,
67    <code>Notepadv2</code>, <code>Notepadv3</code>,
68    <code>Notepadv1Solution</code>, <code>Notepadv2Solution</code>
69    and <code>Notepadv3Solution</code>. The <code>Notepadv#</code> projects are
70the starting points for each of the exercises, while the
71<code>Notepadv#Solution</code> projects are the exercise
72    solutions. If you are having trouble with a particular exercise, you
73    can compare your current work against the exercise solution.</p>
74
75<a name="exercises"></a>
76<h2> Exercises</h2>
77
78  <p>The table below lists the tutorial exercises and describes the development
79areas that each covers. Each exercise assumes that you have completed any
80previous exercises.</p>
81
82  <table border="0" style="padding:4px;spacing:2px;" summary="This
83table lists the
84tutorial examples and describes what each covers. ">
85    <tr>
86      <th width="120"><a href="{@docRoot}resources/tutorials/notepad/notepad-ex1.html">Exercise
871</a></th>
88      <td>Start here. Construct a simple notes list that lets the user add new notes but not
89edit them. Demonstrates the basics of <code>ListActivity</code> and creating
90and handling
91      menu options. Uses a SQLite database to store the notes.</td>
92    </tr>
93    <tr>
94      <th><a href="{@docRoot}resources/tutorials/notepad/notepad-ex2.html">Exercise 2</a></th>
95      <td>Add a second Activity to the
96application. Demonstrates constructing a
97new Activity, adding it to the Android manifest, passing data between the
98activities, and using more advanced screen layout. Also shows how to
99invoke another Activity to return a result, using
100<code>startActivityForResult()</code>.</td>
101    </tr>
102    <tr>
103      <th><a href="{@docRoot}resources/tutorials/notepad/notepad-ex3.html">Exercise 3</a></th>
104      <td>Add handling of life-cycle events to
105the application, to let it
106maintain application state across the life cycle. </td>
107    </tr>
108    <tr>
109    <th><a href="{@docRoot}resources/tutorials/notepad/notepad-extra-credit.html">Extra
110Credit</a></th>
111    <td>Demonstrates how to use the Eclipse
112debugger and how you can use it to
113view life-cycle events as they are generated. This section is optional but
114highly recommended.</td>
115    </tr>
116</table>
117
118
119<a name="other"></a>
120<h2>Other Resources and Further Learning</h2>
121<ul>
122<li>For a lighter but broader introduction to concepts not covered in the
123tutorial,
124take a look at <a href="{@docRoot}resources/faq/commontasks.html">Common Android Tasks</a>.</li>
125<li>The Android SDK includes a variety of fully functioning sample applications
126that make excellent opportunities for further learning. You can find the sample
127applications in the <code>samples/</code> directory of your downloaded SDK, or browser them
128here, in the <a href="{@docRoot}resources/samples/index.html">Sample Code</a> section.</li>
129<li>This tutorial draws from the full Notepad application included in the
130<code>samples/</code> directory of the SDK, though it does not match it exactly.
131When you are done with the tutorial,
132it is highly recommended that you take a closer look at this version of the Notepad
133application,
134as it demonstrates a variety of interesting additions for your application,
135such as:</li>
136  <ul>
137    <li>Setting up a custom striped list for the list of notes.</li>
138    <li>Creating a custom text edit view that overrides the <code>draw()</code>
139    method to make it look like a lined notepad.</li>
140    <li>Implementing a full <code>ContentProvider</code> for notes.</li>
141    <li>Reverting and discarding edits instead of just automatically saving
142    them.</li>
143  </ul>
144</ul>
145