Download Passing Data Between Activities

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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?
Parm 1: The Context
Intent i = new Intent(this, ActivityTwo.class);
startActivity(i);
How to Launch a new Activity from an
Activity?
Parm 2: The Class name of the new Activity to create.
Intent i = new Intent(this, ActivityTwo.class);
startActivity(i);
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 Intent
Intent 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 Intent
Intent 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.
You want to take a photo?
Activity A
Activity B
Create an Intent to
Launch the Camera App
In order to get a picture
for a contact.
Contacts App
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 A
Activity B
Contacts App
//Code in Activity A
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
When the camera activity completes
The contacts app will
receive a call in
onActivityResult().
Contacts App
When the camera activity completes
Contacts App
//Code in Activity B
Intent intent = new Intent();
intent.putExtra();// It will put an image thumbnail into the intent’s data
//set results so Activity A gets onActivityResult() called
setResult(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