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