Building Your First App
来源:互联网 发布:软件行业 职业岗位 编辑:程序博客网 时间:2024/04/29 14:43
Building Your First App
Dependencies
- Android Studio
Welcome to Android application development!
This class teaches you how to build your first Android app. You’ll learn how to create an Android project and run a debuggable version of the app. You'll also learn some fundamentals of Android app design, including how to build a simple user interface and handle user input.
Set Up Your Environment
Before you start this class, be sure you have your development environment set up. You need to:
- Download Android Studio.(下载Android studio)
- Download the latest SDK tools and platforms using the SDK Manager.(配置好 SDK)
Note: Although most of this training class expects that you're using Android Studio, some procedures include alternative instructions for using the SDK tools from the command line instead.
This class uses a tutorial format to create a small Android app that teaches you some fundamental concepts about Android development, so it's important that you follow each step.
Creating an Android Project
This lesson teaches you to
- Create a Project with Android Studio
- Create a Project with Command Line Tools
You should also read
- Managing Projects
An Android project contains all the files that comprise the source code for your Android app.
This lesson shows how to create a new project either using Android Studio or using the SDK tools from a command line.
Note: You should already have the Android SDK installed, and if you're using Android Studio, you should also have Android Studio installed. If you don't have these, follow the guide to Installing the Android SDK before you start this lesson.
Create a Project with Android Studio
- In Android Studio, create a new project:
- If you don't have a project opened, in the Welcome screen, click New Project.
- If you have a project opened, from the File menu, select New Project.
- Under Configure your new project, fill in the fields as shown in figure 1 and click Next.
It will probably be easier to follow these lessons if you use the same values as shown.
- Application Name is the app name that appears to users. For this project, use "My First App."
- Company domain provides a qualifier that will be appended to the package name; Android Studio will remember this qualifier for each new project you create.
- Package name is the fully qualified name for the project (following the same rules as those for naming packages in the Java programming language). Your package name must be unique across all packages installed on the Android system. You can Edit this value independently from the application name or the company domain.
- Project location is the directory on your system that holds the project files.
- Under Select the form factors your app will run on, check the box for Phone and Tablet.
- For Minimum SDK, select API 8: Android 2.2 (Froyo).
The Minimum Required SDK is the earliest version of Android that your app supports, indicated using the API level. 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 Supporting Different Platform Versions).
- Leave all of the other options (TV, Wear, and Glass) unchecked and click Next.
Activities
An activity is one of the distinguishing features of the Android framework. Activities provide the user with access to your app, and there may be many activities. An application will usually have a main activity for when the user launches the application, another activity for when she selects some content to view, for example, and other activities for when she performs other tasks within the app. See Activities for more information.
- Under Add an activity to <template>, select Blank Activity and click Next.
- Under Choose options for your new file, change theActivity Name to MyActivity. The Layout Namechanges to activity_my, and the Title to MyActivity. TheMenu Resource Name is menu_my.
- Click the Finish button to create the project.
Your Android project is now a basic "Hello World" app that contains some default files. Take a moment to review the most important of these:
app/src/main/res/layout/activity_my.xml
- This is the XML layout file for the activity you added when you created the project with Android Studio. Following the New Project workflow, Android Studio presents this file with both a text view and a preview of the screen UI. The file includes some default settings and a
TextView
element that displays the message, "Hello world!"(界面对应的xml类) app/src/main/java/com.mycompany.myfirstapp/MyActivity.java
- A tab for this file appears in Android Studio when the New Project workflow finishes. When you select the file you see the class definition for the activity you created. When you build and run the app, the
Activity
class starts the activity and loads the layout file that says "Hello World!"(Activity对应java类) app/src/main/AndroidManifest.xml
- The manifest file describes the fundamental characteristics of the app and defines each of its components. You'll revisit this file as you follow these lessons and add more components to your app.(project配置文件)
app/build.gradle
(Android studio 编译环境)- Android Studio uses Gradle to compile and build your app. There is a
build.gradle
file for each module of your project, as well as abuild.gradle
file for the entire project. Usually, you're only interested in thebuild.gradle
file for the module, in this case theapp
or application module. This is where your app's build dependencies are set, including thedefaultConfig
settings:compiledSdkVersion
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 SDK Manager.) You can still build your app to support older versions, but setting this to the latest version allows you to enable new features and optimize your app for a great user experience on the latest devices.(编译的sdk版本)applicationId
is the fully qualified package name for your application that you specified during the New Project workflow.minSdkVersion
is the Minimum SDK version you specified during the New Project workflow. This is the earliest version of the Android SDK that your app supports.targetSdkVersion
indicates the highest version of Android with which you have tested your application. 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 and thereby take advantage of new platform features. For more information, read Supporting Different Platform Versions.
See Building Your Project with Gradle for more information about Gradle.
Note also the /res
subdirectories that contain the resources for your application:
drawable<density>/
- Directories for drawable objects (such as bitmaps) that are designed for various densities, such as medium-density (mdpi) and high-density (hdpi) screens. Other drawable directories contain assets designed for other screen densities. Here you'll find the ic_launcher.png that appears when you run the default app. (素材放置)
layout/ (XML放置的目录)
- Directory for files that define your app's user interface like activity_my.xml, discussed above, which describes a basic layout for the MyActivity class.
menu/ (App menu 目录)
- Directory for files that define your app's menu items.
values/ 定义文件目录 包含 string.xml color.xml style.xml
- Directory for other XML files that contain a collection of resources, such as string and color definitions. The strings.xml file defines the "Hello world!" string that displays when you run the default app.
To run the app, continue to the next lesson.
Create a Project with Command Line Tools
If you're not using the Android Studio IDE, you can instead create your project using the SDK tools from a command line:
- Change directories into the Android SDK’s
sdk/
path. - Execute:
tools/android list targets
This prints a list of the available Android platforms that you’ve downloaded for your SDK. Find the platform against which you want to compile your app. Make a note of the target ID. We recommend that you select the highest version possible. You can still build your app to support older versions, but setting the build target to the latest version allows you to optimize your app for the latest devices.
If you don't see any targets listed, you need to install some using the Android SDK Manager tool. SeeAdding SDK Packages.
- Execute:
android create project --target <target-id> --name MyFirstApp \--path <path-to-workspace>/MyFirstApp --activity MyActivity \--package com.example.myfirstapp
Replace
<target-id>
with an ID from the list of targets (from the previous step) and replace<path-to-workspace>
with the location in which you want to save your Android projects.
Tip: Add the platform-tools/
as well as the tools/
directory to your PATH
environment variable.
Your Android project is now a basic "Hello World" app that contains some default files. To run the app, continue to the next lesson.
Running Your App
This lesson teaches you to
- Run on a Real Device
- Run on the Emulator
You should also read
- Using Hardware Devices
- Managing AVDs with AVD Manager
- Managing Projects
If you followed the previous lesson to create an Android project, it includes a default set of "Hello World" source files that allow you to immediately run the app.
How you run your app depends on two things: whether you have a real device running Android and whether you're using Android Studio. This lesson shows you how to install and run your app on a real device and on the Android emulator, and in both cases with either Android Studio or the command line tools.
Run on a Real Device
If you have a device running Android, here's how to install and run your app.
Set up your device
- Plug in your device to your development machine with a USB cable. If you're developing on Windows, you might need to install the appropriate USB driver for your device. For help installing drivers, see theOEM USB Drivers document.
- Enable USB debugging on your device.
- On most devices running Android 3.2 or older, you can find the option under Settings > Applications > Development.
- On Android 4.0 and newer, it's in Settings > Developer options.
Note: On Android 4.2 and newer, Developer options is hidden by default. To make it available, go to Settings > About phone and tap Build number seven times. Return to the previous screen to find Developer options.
Run the app from Android Studio
- Select one of your project's files and click Run from the toolbar.
- In the Choose Device window that appears, select the Choose a running device radio button, select your device, and click OK .
Android Studio installs the app on your connected device and starts it.
Run the app from a command line
Open a command-line and navigate to the root of your project directory. Use Gradle to build your project in debug mode, invoke the assembleDebug
build task using the Gradle wrapper script (gradlew assembleRelease
).
This creates your debug .apk
file inside the module build/
directory, named MyFirstApp-debug.apk
.
On Windows platforms, type this command:
> gradlew.bat assembleDebug
On Mac OS and Linux platforms, type these commands:
$ chmod +x gradlew$ ./gradlew assembleDebug
After you build the project, the output APK for the app module is located in app/build/outputs/apk/
Note: The first command (chmod
) adds the execution permission to the Gradle wrapper script and is only necessary the first time you build this project from the command line.
Make sure the Android SDK platform-tools/
directory is included in your PATH
environment variable, then execute:
adb install app/build/outputs/MyFirstApp-debug.apk
On your device, locate MyFirstApp and open it.
That's how you build and run your Android app on a device! To start developing, continue to the next lesson.
Run on the Emulator
Whether you're using Android Studio or the command line, to run your app on the emulator you need to first create an Android Virtual Device (AVD). An AVD is a device configuration for the Android emulator that allows you to model a specific device.
Create an AVD
- Launch the Android Virtual Device Manager:
- In Android Studio, select Tools > Android > AVD Manager, or click the AVD Manager icon in the toolbar.
- Or, from the command line, change directories to
sdk/
and execute:tools/android avd
Note: The AVD Manager that appears when launched from the command line is different from the version in Android Studio, so the following instructions may not all apply.
- On the AVD Manager main screen (figure 1), click Create Virtual Device.
- In the Select Hardware window, select a device configuration, such as Nexus 6, then click Next.
- Select the desired system version for the AVD and click Next.
- Verify the configuration settings, then click Finish.
For more information about using AVDs, see Managing AVDs with AVD Manager.
Run the app from Android Studio
- In Android Studio, select your project and click Run from the toolbar.
- In the Choose Device window, click the Launch emulator radio button.
- From the Android virtual device pull-down menu, select the emulator you created, and click OK.
It can take a few minutes for the emulator to load itself. You may have to unlock the screen. When you do, My First App appears on the emulator screen.
Run your app from the command line
- Build the project from the command line. The output APK for the app module is located in
app/build/outputs/apk/
. - Make sure the Android SDK
platform-tools/
directory is included in yourPATH
environment variable. - Execute this command:
adb install app/build/outputs/MyFirstApp-debug.apk
- On the emulator, locate MyFirstApp and open it.
That's how you build and run your Android app on the emulator! To start developing, continue to the next lesson.
Building a Simple User Interface
This lesson teaches you to
- Create a Linear Layout
- Add a Text Field
- Add String Resources
- Add a Button
- Make the Input Box Fill in the Screen Width
You should also read
- Layouts
In this lesson, you create a layout in XML that includes a text field and a button. In the next lesson, your app responds when the button is pressed by sending the content of the text field to another activity.
The graphical user interface for an Android app is built using a hierarchy of View
and ViewGroup
objects.View
objects are usually UI widgets such as buttons ortext fields. ViewGroup
objects are invisible view containers that define how the child views are laid out, such as in a grid or a vertical list.
Android provides an XML vocabulary that corresponds to the subclasses of View
and ViewGroup
so you can define your UI in XML using a hierarchy of UI elements.
Layouts are subclasses of the ViewGroup
. In this exercise, you'll work with a LinearLayout
.
Alternative Layouts
Declaring your UI layout in XML rather than runtime code is useful for several reasons, but it's especially important so you can create different layouts for different screen sizes. For example, you can create two versions of a layout and tell the system to use one on "small" screens and the other on "large" screens. For more information, see the class about Supporting Different Devices.
Create a Linear Layout
- In Android Studio, from the
res/layout
directory, open theactivity_my.xml
file.The BlankActivity template you chose when you created this project includes the
activity_my.xml
file with aRelativeLayout
root view and aTextView
child view. - In the Preview pane, click the Hide icon to close the Preview pane.
In Android Studio, when you open a layout file, you’re first shown the Preview pane. Clicking elements in this pane opens the WYSIWYG tools in the Design pane. For this lesson, you’re going to work directly with the XML.
- Delete the
<TextView>
element. - Change the
<RelativeLayout>
element to<LinearLayout>
. - Add the
android:orientation
attribute and set it to"horizontal"
. - Remove the
android:padding
attributes and thetools:context
attribute.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" ></LinearLayout>
Two other attributes, android:layout_width
and android:layout_height
, are required for all views in order to specify their size.
Because the LinearLayout
is the root view in the layout, it should fill the entire screen area that's available to the app by setting the width and height to "match_parent"
. This value declares that the view should expand its width or height to match the width or height of the parent view.
For more information about layout properties, see the Layout guide.
Add a Text Field
As with every View
object, you must define certain XML attributes to specify the EditText
object's properties.
- In the
activity_my.xml
file, within the<LinearLayout>
element, define an<EditText>
element with theid
attribute set to@+id/edit_message
. - Define the
layout_width
andlayout_height
attributes aswrap_content
. - Define a
hint
attribute as a string object namededit_message
.
The <EditText>
element should read as follows:
<EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" />
android:id (控件id)
- This provides a unique identifier for the view, which you can use to reference the object from your app code, such as to read and manipulate the object (you'll see this in the next lesson).
The at sign (
@
) is required when you're referring to any resource object from XML. It is followed by the resource type (id
in this case), a slash, then the resource name (edit_message
).Resource Objects
A resource object is a unique integer name that's associated with an app resource, such as a bitmap, layout file, or string.
Every resource has a corresponding resource object defined in your project's
gen/R.java
file. You can use the object names in theR
class to refer to your resources, such as when you need to specify a string value for theandroid:hint
attribute. You can also create arbitrary resource IDs that you associate with a view using theandroid:id
attribute, which allows you to reference that view from other code.The SDK tools generate the
R.java
file each time you compile your app. You should never modify this file by hand.For more information, read the guide toProviding Resources.
The plus sign (
+
) before the resource type is needed only when you're defining a resource ID for the first time. When you compile the app, the SDK tools use the ID name to create a new resource ID in your project'sgen/R.java
file that refers to theEditText
element. With the resource ID declared once this way, other references to the ID do not need the plus sign. Using the plus sign is necessary only when specifying a new resource ID and not needed for concrete resources such as strings or layouts. See the sidebox for more information about resource objects. android:layout_width
andandroid:layout_height (控件的高度和宽度)
- Instead of using specific sizes for the width and height, the
"wrap_content"
value specifies that the view should be only as big as needed to fit the contents of the view. If you were to instead use"match_parent"
, then theEditText
element would fill the screen, because it would match the size of the parentLinearLayout
. For more information, see the Layouts guide. android:hint (控件默认的值 提示信息)
- This is a default string to display when the text field is empty. Instead of using a hard-coded string as the value, the
"@string/edit_message"
value refers to a string resource defined in a separate file. Because this refers to a concrete resource (not just an identifier), it does not need the plus sign. However, because you haven't defined the string resource yet, you’ll see a compiler error at first. You'll fix this in the next section by defining the string.Note: This string resource has the same name as the element ID:
edit_message
. However, references to resources are always scoped by the resource type (such asid
orstring
), so using the same name does not cause collisions.
Add String Resources
By default, your Android project includes a string resource file at res/values/strings.xml
. Here, you'll add a new string named "edit_message"
and set the value to "Enter a message."
- In Android Studio, from the
res/values
directory, openstrings.xml
. - Add a line for a string named
"edit_message"
with the value, "Enter a message". - Add a line for a string named
"button_send"
with the value, "Send".You'll create the button that uses this string in the next section.
- Remove the line for the
"hello world"
string.
The result for strings.xml
looks like this:
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">My First App</string> <string name="edit_message">Enter a message</string> <string name="button_send">Send</string> <string name="action_settings">Settings</string> <string name="title_activity_main">MainActivity</string></resources>
For text in the user interface, always specify each string as a resource. String resources allow you to manage all UI text in a single location, which makes the text easier to find and update. Externalizing the strings also allows you to localize your app to different languages by providing alternative definitions for each string resource.
For more information about using string resources to localize your app for other languages, see theSupporting Different Devices class.
Add a Button
- In Android Studio, from the
res/layout
directory, edit theactivity_my.xml
file. - Within the
<LinearLayout>
element, define a<Button>
element immediately following the<EditText>
element. - Set the button's width and height attributes to
"wrap_content"
so the button is only as big as necessary to fit the button's text label. - Define the button's text label with the
android:text
attribute; set its value to thebutton_send
string resource you defined in the previous section.
Your <LinearLayout>
should look like this:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" /></LinearLayout>
The layout is currently designed so that both the EditText
and Button
widgets are only as big as necessary to fit their content, as shown in figure 2.
This works fine for the button, but not as well for the text field, because the user might type something longer. It would be nice to fill the unused screen width with the text field. You can do this inside aLinearLayout
with the weight property, which you can specify using the android:layout_weight
attribute.
The weight value is a number that specifies the amount of remaining space each view should consume, relative to the amount consumed by sibling views. This works kind of like the amount of ingredients in a drink recipe: "2 parts soda, 1 part syrup" means two-thirds of the drink is soda. For example, if you give one view a weight of 2 and another one a weight of 1, the sum is 3, so the first view fills 2/3 of the remaining space and the second view fills the rest. If you add a third view and give it a weight of 1, then the first view (with weight of 2) now gets 1/2 the remaining space, while the remaining two each get 1/4.
The default weight for all views is 0, so if you specify any weight value greater than 0 to only one view, then that view fills whatever space remains after all views are given the space they require.
Make the Input Box Fill in the Screen Width
To fill the remaining space in your layout with the EditText
element, do the following:
- In the
activity_my.xml
file, assign the<EditText>
element'slayout_weight
attribute a value of1
. - Also, assign
<EditText>
element'slayout_width
attribute a value of0dp
.<EditText android:layout_weight="1" android:layout_width="0dp" ... />
To improve the layout efficiency when you specify the weight, you should change the width of theEditText
to be zero (0dp). Setting the width to zero improves layout performance because using"wrap_content"
as the width requires the system to calculate a width that is ultimately irrelevant because the weight value requires another width calculation to fill the remaining space.Figure 3 shows the result when you assign all weight to the
EditText
element.android:layout_weight 百分比 比如说 2:1
Here’s how your complete activity_my.xml
layout file should now look:
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <EditText android:id="@+id/edit_message" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/edit_message" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" /></LinearLayout></span><span style="font-size: 28px;"></span>
Run Your App
This layout is applied by the default Activity
class that the SDK tools generated when you created the project. Run the app to see the results:
- In Android Studio, from the toolbar, click Run .
- Or from a command line, change directories to the root of your Android project and execute:
ant debugadb install bin/MyFirstApp-debug.apk
Continue to the next lesson to learn how to respond to button presses, read content from the text field, start another activity, and more.
Starting Another Activity
This lesson teaches you to
- Respond to the Send Button
- Build an Intent
- Create the Second Activity
- Receive the Intent
- Display the Message
You should also read
- Installing the SDK
After completing the previous lesson, you have an app that shows an activity (a single screen) with a text field and a button. In this lesson, you’ll add some code to MyActivity
that starts a new activity when the user clicks the Send button.
Respond to the Send Button
- In Android Studio, from the
res/layout
directory, edit theactivity_my.xml
file. - To the
<Button>
element, add theandroid:onClick
attribute.<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" />
The
android:onClick
attribute’s value,"sendMessage"
, is the name of a method in your activity that the system calls when the user clicks the button. - In the
java/com.mycompany.myfirstapp
directory, open theMyActivity.java
file. - Within the
MyActivity
class, add thesendMessage()
method stub shown below./** Called when the user clicks the Send button */public void sendMessage(View view) { // Do something in response to button}
In order for the system to match this method to the method name given to
android:onClick
, the signature must be exactly as shown. Specifically, the method must:- Be public
- Have a void return value
- Have a
View
as the only parameter (this will be theView
that was clicked)
Next, you’ll fill in this method to read the contents of the text field and deliver that text to another activity.
Build an Intent Activity之间的内容传递
- In
MyActivity.java
, inside thesendMessage()
method, create anIntent
to start an activity calledDisplayMessageActivity
with the following code:public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class);}
Intents
An
Intent
is an object that provides runtime binding between separate components (such as two activities). TheIntent
represents an app’s "intent to do something." You can use intents for a wide variety of tasks, but most often they’re used to start another activity. For more information, see Intents and Intent Filters.Note: The reference to
DisplayMessageActivity
will raise an error if you’re using an IDE such as Android Studio because the class doesn’t exist yet. Ignore the error for now; you’ll create the class soon.The constructor used here takes two parameters:
- A
Context
as its first parameter (this
is used because theActivity
class is a subclass ofContext
) - The
Class
of the app component to which the system should deliver theIntent
(in this case, the activity that should be started)
Android Studio indicates that you must import the
Intent
class. - A
- At the top of the file, import the
Intent
class:import android.content.Intent;
Tip: In Android Studio, press Alt + Enter (option + return on Mac) to import missing classes.
- Inside the
sendMessage()
method, usefindViewById()
to get theEditText
element.public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message);}
- At the top of the file, import the
EditText
class.In Android Studio, press Alt + Enter (option + return on Mac) to import missing classes.
- Assign the text to a local
message
variable, and use theputExtra()
method to add its text value to the intent.public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message);}
An
Intent
can carry data types as key-value pairs called extras. TheputExtra()
method takes the key name in the first parameter and the value in the second parameter. - At the top of the
MyActivity
class, add theEXTRA_MESSAGE
definition as follows:public class MyActivity extends ActionBarActivity { public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE"; ...}
For the next activity to query the extra data, you should define the key for your intent's extra using a public constant. It's generally a good practice to define keys for intent extras using your app's package name as a prefix. This ensures the keys are unique, in case your app interacts with other apps.
- In the
sendMessage()
method, to finish the intent, call thestartActivity()
method, passing it theIntent
object created in step 1.
With this new code, the complete sendMessage()
method that's invoked by the Send button now looks like this:
/** Called when the user clicks the Send button */public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent);}
The system receives this call and starts an instance of the Activity
specified by the Intent
. Now you need to create the DisplayMessageActivity
class in order for this to work.
Create the Second Activity
All subclasses of Activity
must implement the onCreate()
method. This method is where the activity receives the intent with the message, then renders the message. Also, the onCreate()
method must define the activity layout with the setContentView()
method. This is where the activity performs the initial setup of the activity components.
Create a new activity using Android Studio
Android Studio includes a stub for theonCreate()
method when you create a new activity.
- In Android Studio, in the
java
directory, select the package,com.mycompany.myfirstapp, right-click, and select New > Activity > Blank Activity. - In the Choose options window, fill in the activity details:
- Activity Name: DisplayMessageActivity
- Layout Name: activity_display_message
- Title: My Message
- Hierarchical Parent: com.mycompany.myfirstapp.MyActivity
- Package name: com.mycompany.myfirstapp
Click Finish.
- Open the
DisplayMessageActivity.java
file.The class already includes an implementation of the required
onCreate()
method. You will update the implementation of this method later. It also includes an implementation ofonOptionsItemSelected()
, which handles the action bar's Up behavior. Keep these two methods as they are for now. - Remove the
onCreateOptionsMenu()
method.You won't need it for this app.
If you're developing with Android Studio, 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.
Create the activity without Android Studio
If you're using a different IDE or the command line tools, do the following:
- Create a new file named
DisplayMessageActivity.java
in the project'ssrc/
directory, next to the originalMyActivity.java
file. - Add the following code to the file:
public class DisplayMessageActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /** * A placeholder fragment containing a simple view. */ public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_display_message, container, false); return rootView; } }}
Note: If you are using an IDE other than Android Studio, your project does not contain the
activity_display_message
layout that's requested bysetContentView()
. That's OK because you will update this method later and won't be using that layout. - To your
strings.xml
file, add the new activity's title as follows:<resources> ... <string name="title_activity_display_message">My Message</string></resources>
- In your manifest file,
AndroidManifest.xml
, within theApplication
element, add the<activity>
element for yourDisplayMessageActivity
class, as follows:<application ... > ... <activity android:name="com.mycompany.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.mycompany.myfirstapp.MyActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.mycompany.myfirstapp.MyActivity" /> </activity></application>
The android:parentActivityName
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 Up navigation on Android 4.1 (API level 16) and higher. You can provide the same navigation behaviors for older versions of Android by using the Support Library and adding the <meta-data>
element as shown here.
Note: Your Android SDK should already include the latest Android Support Library, which you installed during the Adding SDK Packages step. When using the templates in Android Studio, the Support Library is automatically added to your app project (you can see the library's JAR file listed underAndroid Dependencies). If you're not using Android Studio, you need to manually add the library to your project—follow the guide for setting up the Support Library then return here.
If you're using a different IDE than Android Studio, don't worry that the app won't yet compile. You'll soon update the activity to display a custom text view.
Receive the Intent
Every Activity
is invoked by an Intent
, regardless of how the user navigated there. You can get theIntent
that started your activity by calling getIntent()
and retrieve the data contained within the intent.
- In the
java/com.mycompany.myfirstapp
directory, edit theDisplayMessageActivity.java
file. - In the
onCreate()
method, remove the following line:setContentView(R.layout.activity_display_message);
- Get the intent and assign it to a local variable.
Intent intent = getIntent();
- At the top of the file, import the
Intent
class.In Android Studio, press Alt + Enter (option + return on Mac) to import missing classes.
- Extract the message delivered by
MyActivity
with thegetStringExtra()
method.String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
Display the Message
- In the
onCreate()
method, create aTextView
object.TextView textView = new TextView(this);
- Set the text size and message with
setText()
.textView.setTextSize(40);textView.setText(message);
- Then add the
TextView
as the root view of the activity’s layout by passing it tosetContentView()
.setContentView(textView);
- At the top of the file, import the
TextView
class.In Android Studio, press Alt + Enter (option + return on Mac) to import missing classes.
The complete onCreate()
method for DisplayMessageActivity
now looks like this:
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the message from the intent Intent intent = getIntent(); String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE); // Create the text view TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); // Set the text view as the activity layout setContentView(textView);}
You can now run the app. When it opens, type a message in the text field, click Send, and the message appears on the second activity.
That's it, you've built your first Android app!
To learn more, follow the link below to the next class.
- Building your First App
- Building Your First App
- Building Your First App
- Training ------ Building Your First App ------ Building Your First App
- 1.1 Building Your First App
- 1.1 Building your first app
- Building Your First App笔记
- Building Your First App学习笔记
- Getting Started-Building Your First App
- 【菜鸟翻译】1.Building Your First App
- AndroidTraining学习------Building-Your-First-App-
- Building Your First HTML5 App Using BlackBerry WebWorks APIs
- Android Develop Training中文翻译02 《Building Your First App》
- 【English】Android -> Training -> Building Your First App -> Starting Another Activity
- Training ------ Building Your First App ------ Creating An Android Project
- Android官方文档翻译 二 1.Building Your First App
- Develop--Training(二)Getting Started--Building Your First App
- Your First iOS App
- 从C++到objective-c
- web.xml配置文件参考
- hdoj 2485 Destroying the bus stations 【最小割 + 最短路】
- 7.30学习总结
- 多租户--hibernate实现
- Building Your First App
- BZOJ 2002([Hnoi2010]Bounce 弹飞绵羊-LCT)
- 2015 多校第四场 Walk Out
- 机试算法讲解: 第11题 贪心之猫鼠大战
- 枯燥的程序员生活——自己编写的一首歌曲
- 有利于SEO的DIV+CSS的命名规则
- HD 1272 小希的迷宫【并查集】(无递归)
- hadoop简单运行流程
- ViewPager 详解(五)-----使用Fragment实现ViewPager滑动