am fff0fb87: am 82e1d979: update building first app class with some changes to eclipse workflow and account for small differences when using an IDE other than eclipse

* commit 'fff0fb87271faf8f19d9fd062c5ebfb720204223':
  update building first app class with some changes to eclipse workflow and account for small differences when using an IDE other than eclipse
This commit is contained in:
Scott Main
2012-12-04 16:45:25 -08:00
committed by Android Git Automerger
8 changed files with 194 additions and 90 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -21,18 +21,24 @@ Android SDK, then execute <code>android sdk</code>.</li>
</ul>
</li>
<li>When the Android SDK Manager opens, it automatically selects a set of recommended packages,
as shown in figure 1.
Simply click <strong>Install</strong> to install the recommended packages. The Android SDK Manager
installs the selected packages into
your Android SDK environment.</li>
<li>The SDK Manager shows all the SDK packages available for you to add to your Android SDK.
As a minimum configuration for your SDK, we recommend you install the following:
<ul>
<li>The latest Tools packages (check the <strong>Tools</strong> folder).</li>
<li>The latest version of Android (check the first <strong>Android</strong> folder).</li>
<li>The Android Support Library (open the <strong>Extras</strong> folder and check
<strong>Android Support Library</strong>).</li>
</ul>
<p>Once you've chosen your packages, click <strong>Install</strong>. The Android SDK Manager
installs the selected packages into your Android SDK environment.</li>
</ol>
<p>If you install the recommended packages, you're now ready to start developing apps!
To start developing, read <a href="{@docRoot}training/basics/firstapp/index.html"
<p>With these packages installed, you're ready to start developing.
To get started, read <a href="{@docRoot}training/basics/firstapp/index.html"
>Building Your First App</a>.</p>
<img src="/images/sdk_manager_packages.png" alt="" />
<img src="/images/sdk_manager_packages.png" alt="" height="396" />
<p class="img-caption"><strong>Figure 1.</strong> The Android SDK Manager shows the
SDK packages that are available, already installed, or for which an update is available.</p>
@@ -40,15 +46,18 @@ SDK packages that are available, already installed, or for which an update is av
<h3>Additional information</h3>
<p>For more information about using the SDK Manager and some of the available packages,
see the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> document.</p>
<p>Everything you need to develop Android apps is on this web site, including <a
<ul>
<li>For more information about using the SDK Manager and some of the available packages,
see the <a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> document.</li>
<li>This web site provides all information you need to develop Android apps, including <a
href="{@docRoot}design/index.html">design guidelines</a>,
<a href="{@docRoot}training/index.html">developer training</a>, <a
href="{@docRoot}reference/packages.html">API reference</a>, and information
about how you can <a href="{@docRoot}distribute/index.html">distribute your app</a>.
For additional resources about developing and distributing your app, see the
<a href="{@docRoot}support.html">Developer Support Resources</a>.</p>
about how you can <a href="{@docRoot}distribute/index.html">distribute your app</a>. We recommend
you begin by reading <a href="{@docRoot}training/basics/firstapp/index.html"
>Building Your First App</a>.</li>
<li>For additional resources about developing and distributing your app, see the
<a href="{@docRoot}support.html">Developer Support Resources</a>.</li>
</ul>

View File

@@ -62,7 +62,7 @@ Devices</a>.</p>
</div>
</div>
<img src="{@docRoot}images/viewgroup.png" alt="" width="400" />
<img src="{@docRoot}images/viewgroup.png" alt="" width="400" height="214" />
<p class="img-caption"><strong>Figure 1.</strong> Illustration of how {@link
android.view.ViewGroup} objects form branches in the layout and contain other {@link
android.view.View} objects.</p>
@@ -83,7 +83,7 @@ the Graphical Layout editor. This is an editor that helps you build layouts usin
lesson, youre going to work directly with the XML, so click the <em>activity_main.xml</em> tab at
the bottom of the screen to open the XML editor.</p>
<p>The BlankActivity template you used to start this project creates the
<p>The BlankActivity template you chose when you created this project includes the
<code>activity_main.xml</code> file with a {@link
android.widget.RelativeLayout} root view and a {@link android.widget.TextView} child view.</p>
@@ -225,9 +225,9 @@ localize your app to different languages by providing alternative definitions fo
string resource.</p>
<p>By default, your Android project includes a string resource file at
<code>res/values/strings.xml</code>. Open this file and delete the {@code &lt;string>} element
named <code>"hello_world"</code>. Then add a new one named
<code>"edit_message"</code> and set the value to "Enter a message."</p>
<code>res/values/strings.xml</code>. Add a new string named
<code>"edit_message"</code> and set the value to "Enter a message." (You can delete
the "hello_world" string.)</p>
<p>While youre in this file, also add a "Send" string for the button youll soon add, called
<code>"button_send"</code>.</p>

View File

@@ -42,7 +42,7 @@ SDK tools from a command line.</p>
<p class="note"><strong>Note:</strong> You should already have the Android SDK installed, and if
you're using Eclipse, you should also have the <a href="{@docRoot}tools/sdk/eclipse-adt.html">ADT
plugin</a> installed (version 20.0.0 or higher). If you don't have these, follow the guide to <a
plugin</a> installed (version 21.0.0 or higher). If you don't have these, follow the guide to <a
href="{@docRoot}sdk/installing/index.html">Installing the Android SDK</a> before you start this
lesson.</p>
@@ -50,13 +50,10 @@ lesson.</p>
<h2 id="Eclipse">Create a Project with Eclipse</h2>
<ol>
<li>In Eclipse, click New Android
App Project <img src="{@docRoot}images/tools/new_adt_project.png"
style="vertical-align:baseline;margin:0" />
in the toolbar. (If you dont see this button,
then you have not installed the ADT plugin&mdash;see <a
href="{@docRoot}sdk/installing/installing-adt.html">Installing the Eclipse Plugin</a>.)
</li>
<li>Click <strong>New</strong> <img src="{@docRoot}images/tools/eclipse-new.png"
style="vertical-align:baseline;margin:0" /> in the toolbar.</li>
<li>In the window that appears, open the <strong>Android</strong> folder,
select <strong>Android Application Project</strong>, and click <strong>Next</strong>.</li>
<div class="figure" style="width:420px">
<img src="{@docRoot}images/training/firstapp/adt-firstapp-setup.png" alt="" />
@@ -65,16 +62,35 @@ href="{@docRoot}sdk/installing/installing-adt.html">Installing the Eclipse Plugi
<li>Fill in the form that appears:
<ul>
<li><em>Application Name</em> is the app name that appears to users.
<li><strong>Application Name</strong> is the app name that appears to users.
For this project, use "My First App."</p></li>
<li><em>Project Name</em> is the name of your project directory and the name visible in Eclipse.</li>
<li><em>Package Name</em> is the package namespace for your app (following the same
<li><strong>Project Name</strong> is the name of your project directory and the name visible in Eclipse.</li>
<li><strong>Package Name</strong> is the package namespace for your app (following the same
rules as packages in the Java programming language). Your package name
must be unique across all packages installed on the Android system. For this reason, it's generally
best if you use a name that begins with the reverse domain name of your organization or
publisher entity. For this project, you can use something like "com.example.myfirstapp."
However, you cannot publish your app on Google Play using the "com.example" namespace.</li>
<li><em>Build SDK</em> is the platform version against which you will compile your app.
<li><strong>Minimum Required SDK</strong> is the lowest version of Android that your app supports,
indicated using the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels"
>API level</a>.
To support as many devices as possible, you should set this to the lowest version available
that allows your app to provide its core feature set. If any feature of your app is possible
only on newer versions of Android and it's not critical to the app's core feature set, you
can enable the feature only when running on the versions that support it (as
discussed in <a href="{@docRoot}training/basics/supporting-devices/platforms.html"
>Supporting Different Platform Versions</a>).
Leave this set to the default value for this project.
</li>
<li><strong>Target SDK</strong> indicates the highest version of Android (also using the
<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels"
>API level</a>) with which you
have tested with your application.
<p>As new versions of Android become available, you should
test your app on the new version and update this value to match the latest API level
in order to take advantage of new platform features.</p>
</li>
<li><strong>Compile With</strong> is the platform version against which you will compile your app.
By default, this is set to the latest version of Android available in your SDK. (It should
be Android 4.1 or greater; if you don't have such a version available, you must install one
using the <a href="{@docRoot}sdk/installing/adding-packages.html">SDK Manager</a>).
@@ -82,17 +98,14 @@ However, you cannot publish your app on Google Play using the "com.example" name
support older versions, but setting the build target to the latest version allows you to
enable new features and optimize your app for a great user experience on the latest
devices.</li>
<li><em>Minimum Required SDK</em> is the lowest version of Android that your app supports.
To support as many devices as possible, you should set this to the lowest version available
that allows your app to provide its core feature set. If any feature of your app is possible
only on newer versions of Android and it's not critical to the app's core feature set, you
can enable the feature only when running on the versions that support it.
<p>Leave this set to the default value for this project.</p>
<li><strong>Theme</strong> specifies the Android UI style to apply for your app. You can leave
this alone.</li>
</ul>
<p>Click <strong>Next</strong>.</p>
</li>
<li>The following screen provides tools to help you create a launcher icon for your app.
<li>On the next screen to configure the project, leave the default selections and click
<strong>Next</strong>.</li>
<li>The next screen can help you create a launcher icon for your app.
<p>You can customize an icon in several ways and the tool generates an icon for all
screen densities. Before you publish your app, you should be sure your icon meets
the specifications defined in the <a

View File

@@ -102,10 +102,16 @@ Drivers</a> document.</li>
</li>
</ol>
<p>To run the app from Eclipse, open one of your project's files and click
Run <img src="{@docRoot}images/tools/eclipse-run.png" style="vertical-align:baseline;margin:0" />
from the toolbar. Eclipse installs the app on your connected device and starts
it.</p>
<p>To run the app from Eclipse:</p>
<ol>
<li>Open one of your project's files and click
<strong>Run</strong> <img
src="{@docRoot}images/tools/eclipse-run.png" style="vertical-align:baseline;margin:0" />
from the toolbar.</li>
<li>In the <strong>Run as</strong> window that appears, select
<strong>Android Application</strong> and click <strong>OK</strong>.</li>
</ol>
<p>Eclipse installs the app on your connected device and starts it.</p>
<p>Or to run your app from a command line:</p>
@@ -159,9 +165,16 @@ Give it a name, a platform target, an SD card size, and a skin (HVGA is default)
<li>After the emulator boots up, unlock the emulator screen.</li>
</ol>
<p>To run the app from Eclipse, open one of your project's files and click
Run <img src="{@docRoot}images/tools/eclipse-run.png" style="vertical-align:baseline;margin:0" />
from the toolbar. Eclipse installs the app on your AVD and starts it.</p>
<p>To run the app from Eclipse:</p>
<ol>
<li>Open one of your project's files and click
<strong>Run</strong> <img
src="{@docRoot}images/tools/eclipse-run.png" style="vertical-align:baseline;margin:0" />
from the toolbar.</li>
<li>In the <strong>Run as</strong> window that appears, select
<strong>Android Application</strong> and click <strong>OK</strong>.</li>
</ol>
<p>Eclipse installs the app on your AVD and starts it.</p>
<p>Or to run your app from the command line:</p>

View File

@@ -19,11 +19,7 @@ previous.link=building-ui.html
<li><a href="#RespondToButton">Respond to the Send Button</a></li>
<li><a href="#BuildIntent">Build an Intent</a></li>
<li><a href="#StartActivity">Start the Second Activity</a></li>
<li><a href="#CreateActivity">Create the Second Activity</a>
<ol>
<li><a href="#AddToManifest">Add it to the manifest</a></li>
</ol>
</li>
<li><a href="#CreateActivity">Create the Second Activity</a></li>
<li><a href="#ReceiveIntent">Receive the Intent</a></li>
<li><a href="#DisplayMessage">Display the Message</a></li>
</ol>
@@ -49,8 +45,8 @@ starts a new activity when the user clicks the Send button.</p>
<h2 id="RespondToButton">Respond to the Send Button</h2>
<p>To respond to the button's on-click event, open the <code>main.xml</code> layout file and add the
<a
<p>To respond to the button's on-click event, open the <code>activity_main.xml</code>
layout file and add the <a
href="{@docRoot}reference/android/view/View.html#attr_android:onClick">{@code android:onClick}</a>
attribute to the {@link android.widget.Button &lt;Button>} element:</p>
@@ -67,7 +63,8 @@ href="{@docRoot}reference/android/view/View.html#attr_android:onClick">{@code
android:onClick}</a> attributes value, <code>"sendMessage"</code>, is the name of a method in your
activity that the system calls when the user clicks the button.</p>
<p>Open the <code>MainActivity</code> class and add the corresponding method:</p>
<p>Open the <code>MainActivity</code> class (located in the project's
<code>src/</code> directory) and add the corresponding method:</p>
<pre>
/** Called when the user clicks the Send button */
@@ -76,6 +73,11 @@ public void sendMessage(View view) {
}
</pre>
<p>This requires that you import the {@link android.view.View} class:</p>
<pre>
import android.view.View;
</pre>
<p class="note"><strong>Tip:</strong> In Eclipse, press Ctrl + Shift + O to import missing classes
(Cmd + Shift + O on Mac).</p>
@@ -137,7 +139,8 @@ will raise an error if youre using an IDE such as Eclipse because the class d
Ignore the error for now; youll create the class soon.</p>
<p>An intent not only allows you to start another activity, but it can carry a bundle of data to the
activity as well. So, use {@link android.app.Activity#findViewById findViewById()} to get the
activity as well. Inside the {@code sendMessage()} method,
use {@link android.app.Activity#findViewById findViewById()} to get the
{@link android.widget.EditText} element and add its text value to the intent:</p>
<pre>
@@ -147,11 +150,17 @@ String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
</pre>
<p class="note"><strong>Note:</strong>
You now need import statements for <code>android.content.Intent</code>
and <code>android.widget.EditText</code>. You'll define the <code>EXTRA_MESSAGE</code>
constant in a moment.</p>
<p>An {@link android.content.Intent} can carry a collection of various data types as key-value
pairs called <em>extras</em>. The {@link android.content.Intent#putExtra putExtra()} method takes the
key name in the first parameter and the value in the second parameter.</p>
<p>In order for the next activity to query the extra data, you should define your key using a
<p>In order for the next activity to query the extra data, you should define the key
for your intent's extra using a
public constant. So add the {@code EXTRA_MESSAGE} definition to the top of the {@code
MainActivity} class:</p>
@@ -166,9 +175,11 @@ public class MainActivity extends Activity {
as a prefix. This ensures they are unique, in case your app interacts with other apps.</p>
<h2 id="StartActivity">Start the Second Activity</h2>
<p>To start an activity, you simply need to call {@link android.app.Activity#startActivity
<p>To start an activity, call {@link android.app.Activity#startActivity
startActivity()} and pass it your {@link android.content.Intent}. The system receives this call
and starts an instance of the {@link android.app.Activity}
specified by the {@link android.content.Intent}.</p>
@@ -202,19 +213,19 @@ work.</p>
<p>To create a new activity using Eclipse:</p>
<ol>
<li>Click New <img src="{@docRoot}images/tools/eclipse-new.png"
<li>Click <strong>New</strong> <img src="{@docRoot}images/tools/eclipse-new.png"
style="vertical-align:baseline;margin:0" /> in the toolbar.</li>
<li>In the window that appears, open the <strong>Android</strong> folder
and select <strong>Android Activity</strong>. Click <strong>Next</strong>.</li>
<li>Select <strong>BlankActivity</strong> and click <strong>Next</strong>.</li>
<li>Fill in the activity details:
<ul>
<li><em>Project</em>: MyFirstApp</li>
<li><em>Activity Name</em>: DisplayMessageActivity</li>
<li><em>Layout Name</em>: activity_display_message</li>
<li><em>Navigation Type</em>: None</li>
<li><em>Hierarchial Parent</em>: com.example.myfirstapp.MainActivity</li>
<li><em>Title</em>: My Message</li>
<li><strong>Project</strong>: MyFirstApp</li>
<li><strong>Activity Name</strong>: DisplayMessageActivity</li>
<li><strong>Layout Name</strong>: activity_display_message</li>
<li><strong>Title</strong>: My Message</li>
<li><strong>Hierarchial Parent</strong>: com.example.myfirstapp.MainActivity</li>
<li><strong>Navigation Type</strong>: None</li>
</ul>
<p>Click <strong>Finish</strong>.</p>
</li>
@@ -224,44 +235,94 @@ work.</p>
{@code DisplayMessageActivity.java} in the project's <code>src/</code> directory, next to
the original {@code MainActivity.java} file.</p>
<p>Open the {@code DisplayMessageActivity.java} file. If you used Eclipse to create it, the class
<p>Open the {@code DisplayMessageActivity.java} file. If you used Eclipse to create this
activity:</p>
<ul>
<li>The class
already includes an implementation of the required {@link android.app.Activity#onCreate onCreate()}
method. There's also an implementation of the {@link android.app.Activity#onCreateOptionsMenu
method.</li>
<li>There's also an implementation of the {@link android.app.Activity#onCreateOptionsMenu
onCreateOptionsMenu()} method, but
you won't need it for this app so you can remove it. The class should look like this:</p>
you won't need it for this app so you can remove it.</li>
<li>There's also an implementation of {@link android.app.Activity#onOptionsItemSelected
onOptionsItemSelected()} which handles the behavior for the action bar's <em>Up</em> behavior.
Keep this one the way it is.</li>
</ul>
<p>The class should look like this:</p>
<pre>
public class DisplayMessageActivity extends Activity {
&#64;Override
public void onCreate(Bundle savedInstanceState) {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
// Show the Up button in the action bar.
getActionBar().setDisplayHomeAsUpEnabled(true);
}
&#64;Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
}
</pre>
<p>If you used an IDE other than Eclipse, update your {@code DisplayMessageActivity}
class with the above code.</p>
<p>All subclasses of {@link android.app.Activity} must implement the {@link
android.app.Activity#onCreate onCreate()} method. The system calls this when creating a new
instance of the activity. It is where you must define the activity layout and where you should
instance of the activity. This method is where you must define the activity layout
with the {@link android.app.Activity#setContentView setContentView()} method
and is where you should
perform initial setup for the activity components.</p>
<p class="note"><strong>Note:</strong> If you are using an IDE other than Eclipse, your project
does not contain the {@code activity_display_message} layout that's requested by
{@link android.app.Activity#setContentView setContentView()}. That's OK because
you will update this method later and won't be using that layout.</p>
<h3 id="AddTitle">Add the title string</h3>
<p>If you used Eclipse, you can skip to the <a href="#AddToManifest">next section</a>,
because the template provides
the title string for the new activity.</p>
<p>If you're using an IDE other than Eclipse,
add the new activity's title to the {@code strings.xml} file:</p>
<pre>
&lt;resources>
...
&lt;string name="title_activity_display_message">My Message&lt;/string>
&lt;/resources>
</pre>
<h3 id="AddToManifest">Add it to the manifest</h3>
<p>You must declare all activities in your manifest file, <code>AndroidManifest.xml</code>, using an
<p>All activities must be declared in your manifest file, <code>AndroidManifest.xml</code>, using an
<a
href="{@docRoot}guide/topics/manifest/activity-element.html">{@code &lt;activity>}</a> element.</p>
<p>When you use the Eclipse tools to create the activity, it creates a default entry. It should
<p>When you use the Eclipse tools to create the activity, it creates a default entry. If you're
using a different IDE, you need to add the manifest entry yourself. It should
look like this:</p>
<pre>
&lt;application ... >
...
&lt;activity
android:name=".DisplayMessageActivity"
android:label="@string/title_activity_display_message" >
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
&lt;meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
@@ -269,24 +330,32 @@ look like this:</p>
&lt;/application>
</pre>
<p>The <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code
&lt;meta-data>}</a> element declares the name of this activity's parent activity
within the app's logical hierarchy. The Android <a
href="{@docRoot}tools/extras/support-library.html">Support Library</a> uses this information
to implement default navigation behaviors, such as <a
href="{@docRoot}design/patterns/navigation.html">Up navigation</a>.</p>
<p>The <a href="{@docRoot}guide/topics/manifest/activity-element.html#parent">{@code
android:parentActivityName}</a> attribute declares the name of this activity's parent activity
within the app's logical hierarchy. The system uses this value
to implement default navigation behaviors, such as <a
href="{@docRoot}design/patterns/navigation.html">Up navigation</a> on
Android 4.1 (API level 16) and higher. You can provide the same navigation behaviors for
older versions of Android by using the
<a href="{@docRoot}tools/extras/support-library.html">Support Library</a> and adding
the <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code
&lt;meta-data>}</a> element as shown here.</p>
<p class="note"><strong>Note:</strong> During <a
href="{@docRoot}sdk/installing/adding-packages.html">installation</a>, you should have downloaded
the latest Support Library. Eclipse automatically includes this library in your app project (you
can see the library's JAR file listed under <em>Android Dependencies</em>). If you're not using
Eclipse, you may need to manually add the library to your project&mdash;follow this guide for <a
href="{@docRoot}tools/extras/support-library.html#SettingUp">setting up the Support Library</a>.</p>
<p class="note"><strong>Note:</strong> Your Android SDK should already include
the latest Android Support Library. It's included with the ADT Bundle but if you're using
a different IDE, you should have installed it during the
<a href="{@docRoot}sdk/installing/adding-packages.html">Adding Platforms and Packages</a> step.
When using the templates in Eclipse, the Support Library is automatically added to your app project
(you can see the library's JAR file listed under <em>Android Dependencies</em>). If you're not using
Eclipse, you need to manually add the library to your project&mdash;follow the guide for <a
href="{@docRoot}tools/extras/support-library.html#SettingUp">setting up the Support Library</a>
then return here.</p>
<p>The app is now runnable because the {@link android.content.Intent} in the
first activity now resolves to the {@code DisplayMessageActivity} class. If you run the app now,
clicking the Send button starts the second activity, but it's still using the default
"Hello world" layout.</p>
<p>If you're developing with Eclipse, you can run the app now, but not much happens.
Clicking the Send button starts the second activity but it uses
a default "Hello world" layout provided by the template. You'll soon update the
activity to instead display a custom text view, so if you're using a different IDE,
don't worry that the app won't yet compile.</p>
<h2 id="ReceiveIntent">Receive the Intent</h2>