Upload
trory
View
31
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Passing Data Between Activities. Android Activities. If you remember, Android stores Activities on a stack. You have the ability to add as many Activities onto the stack from you application and needed. You can also pass data to and from Activities. - PowerPoint PPT Presentation
Citation preview
Passing Data Between Activities
Android Activities
• If you remember, Android stores Activities on a stack.
• You have the ability to add as many Activities onto the stack from you application and needed.
• You can also pass data to and from Activities.
How to Launch a new Activity from an Activity?
• The Activity class provides a method called startActivity()
• startActivity() takes an Intent as an argument.
• The Intent provides the information with what new Activity we want to create.
How to Launch a new Activity from an Activity?
Intent i = new Intent(this, ActivityTwo.class);startActivity(i);
How to Launch a new Activity from an Activity?
Intent i = new Intent(this, ActivityTwo.class);startActivity(i);
Parm 1: The Context
How to Launch a new Activity from an Activity?
Intent i = new Intent(this, ActivityTwo.class);startActivity(i);
Parm 2: The Class name of the new Activity to create.
Intents
• Intents are asynchronous messages which allow Android components to request functionality from other components of the Android system.
• In addition to giving information about what Activity we want to launch, Intents can also store data to be passed between Activities.
Storing Data in the IntentIntent i = new Intent(this, ActivityTwo.class);i.putExtra("UserName", "John Doe");i.putExtra("DLNumber", 123456789);startActivity(i);
Extracting data stored in Intent from the new Activity
• The Activity class has a getIntent()
• Use the Intent returned from the getIntent() to extract any data that was passed.
Extracting Data from the IntentIntent i = new Intent(this, ActivityTwo.class);i.putExtra("UserName", "John Doe");i.putExtra("DLNumber", 123456789);startActivity(i);
Intent i = getIntent();String name = i.getStringExtra("UserName");int dl = i.getIntExtra("DLNumber", 0);
How to get a result from an Activity
startActivityForResult()• From ActivityOne, you can start ActivityTwo by
calling startActivityForResult(). Using this method, you can specify a request code.
• When ActivityTwo is about to end, you can call setResult() to pass data back to ActivityOne.
• Once ActivityTwo ends, if it called setResult(), then the onActivityResult() method on ActivityOne is executed. ActivityOne can now access the data sent to it from ActivityTwo.
Contacts App
Create an Intent to Launch the Camera AppIn order to get a picture for a contact.
When you start the activity, you’ll send a request code that will be returned to you when the launched activity completes.
You want to take a photo?
Activity BActivity A
Contacts App//Code in Activity AIntent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// start the image capture IntentstartActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
You want to take a photo?
Activity B
Activity A
Contacts App
The contacts app will receive a call in onActivityResult().
When the camera activity completes
Contacts App
When the camera activity completes
//Code in Activity BIntent intent = new Intent();intent.putExtra();// It will put an image thumbnail into the intent’s data
//set results so Activity A gets onActivityResult() calledsetResult(Activity.RESULT_OK, intent);finish();
Implementing startActivityForResult()
• Code in ActivityOne.java
REQUEST_CODE is a user defined integer. I usually store the REQUEST_CODE as a public static final member so it can be accessed in both activities.
Returning result from SubActivity
Code from ActivityTwo.java
Implementing startActivityForResult()
• Code in ActivityOne.java