Tải bản đầy đủ (.pdf) (15 trang)

Android chapter12 intents 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (562.66 KB, 15 trang )

10/18/2011
1
Android
12-2
Intents
Part2
Inter‐ProcessCommunicationUsingBundles
VictorMatos
ClevelandStateUniversity
Notesarebasedon:
AndroidDevelopers
/>12.Android–Intents–Part2
Intents
AndroidIntents
An
activity
usually presents a single visual user interface from which a number of
An

activity
usually

presents

a

single

visual

user



interface

from

which

a

number

of

actionscouldbeperformed.
Movingfromoneactivitytoanotherisaccomplishedbyhavingthecurrent
activitystartthenextonethroughsocalledintents.
Intent
{action
+
data}
Activity

1
22
{action data}
requestCode
requestResult
[optionaldata ]
Activity


1
startActivityForResult

onActivityResult()

Activity‐2
onResult()


10/18/2011
2
12.Android–Intents–Part2
Intents
AndroidBundles
MostprogramminglanguagessupportthenotionofIPC metho
d
‐calling with
argumentsflowingbirectionallyfromthecallertotheinvokedmethod.
Inandroidthecallingactivityissuesaninvocationtoanotheractivityusingan
Intent object.
NotablyinAndroid,thecallerdoesnotstopwaitingfor
the called activity to return results Instead a listening
33
the

called

activity

to


return

results
.
Instead

a

list ening

method[onActivityResult( )]shouldbeused.
IPCInter‐ProcessCommunication
12.Android–Intents–Part2
Intents
AndroidBundles
NormallytheIPCexpressionsactualparameterlist,and
formalparameterlist areusedtodesignatedthesignatureof
particpatingarguments,andthecurrentlysupplieddata.
Insteadofusingthetraditionalformal/actualparameterlists,
AndroidreliesontheconceptofIntentstoestablishInter‐process‐
44
communication.
Intentsoptionallycarryanamedactuallistorbundle fo rdata
exchange.
10/18/2011
3
12.Android–Intents–Part2
Intents
AndroidBundles

TheAndroidBundle containerisasimplemechanismusedtopassdatabetween
activities.
ABundle isatype‐safecollectionof
<name,value> pairs.
ThereisasetofputXXX andgetXXX methodstostoreandretrieve(singleand
array)valuesofprimitivedatatypesfrom/tothebundles.Forexample
55
Bundle myBundle = new Bundle();
myBundle.putDouble ("var1", 3.1415);

Double v1 = myBundle.getDouble("var1");
12.Android–Intents–Part2
Intents
AndroidIntents&Bundles
Activit
y
1:Sender Activit
y
2:Receiver
IntentmyIntentA1A2=newIntent(Activity1.this,
Activity2.class);
BundlemyBundle1=newBundle();
myBundle1.putInt("val1",123);
myIntentA1A2.putExtras(myBundle1);
startActivityForResult(myIntentA1A2,1122);
y
y
INTENT
requestCode
(

1122
)
Senderclass/Receiverclass
66
requestCode
(
1122
)
resultCode
Extras:{val1=123 }
10/18/2011
4
12.Android–Intents–Part2
Intents
AndroidIntents&Bundles
Activit
y
1:Sender Activit
y
2:Receiver
y
y
INTENT
Cd
(
1122
)
Senderclass/Receiverclass
IntentmyCallerIntent2=getIntent();
BundlemyBundle =myCallerIntent.getExtras();

int val1=myBundle.getInt("val1");
77
request
C
o
d
e
(
1122
)
resultCode
Extras:{val1=123 }
12.Android–Intents–Part2
Intents
AndroidIntents&Bundles
Activit
y
1:Sender Activit
y
2:Receiver
y
y
INTENT
Cd
(
1122
)
Senderclass/Receiverclass
myBundle.putString("val1",456);
myCallerIntent.putExtras(myBundle);

setResult(Activity.RESULT_OK,
myCallerIntent);
88
request
C
o
d
e
(
1122
)
resultCode (OK)
Extras:{val1=456}
10/18/2011
5
12.Android–Intents–Part2
Intents
AndroidBundlesAvailableat: />Exam
p
le of Public Methods
void
clear()
Removes all elements from the mapping of this Bundle.

Object
clone
()
Object

clone

()

Clones the current Bundle.

boolean
containsKey(String key)
Returns true if the given key is contained in the mapping of this Bundle.

void
putIntArray
(String key, int[] value)
Inserts an int array value into the mapping of this Bundle, replacing any
existing value for the given key.

void
putString(String key, String value)
Inserts a String value into the mapping of this Bundle, replacing any existing
value for the given key.

void
putStringArray
(String key, String[] value)
Inserts a String array value into the mapping of this Bundle, replacing any

99
existing value for the given key.
void
putStringArrayList(String key, ArrayList<String> value)
Inserts an ArrayList value into the mapping of this Bundle, replacing any
existing value for the given key.


void
remove
(String key)
Removes any entry with the given key from the mapping of this Bundle.

int
size()
Returns the number of mappings contained in this Bundle.


12.Android–Intents–Part2
Intents
Tutorial1.ActivityExcahange
Activity1collectstwovaluesfromitsUIandcallsActivity2tocomputethe
sumofthem.TheresultissentbackfromActivity2toActivity1.
1010
10/18/2011
6
12.Android–Intents–Part2
Intents
Tutorial1.ActivityExcahange
Step1. CreateGUIforActivity1(main1.xml)
<?xmlversion="1.0"encoding="utf‐8"?>
<LinearLayout xmlns:android=" />android:orientation="vertical"android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text="Activity1"
android:textSize="22sp"
android:background

="
#ff0000ff
"
android:background
#ff0000ff

android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<EditText
android:hint="Enterfirstvalue(asigneddouble)"
android:id="@+id/EditText01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal|numberSigned|number"/>
<EditText
android:hint="Secondvalue(apositiveinteger)"
android:id="@+id/EditText02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number"/>
<Button
1111
<Button

android:text="AddValues"
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:background="#ff0000ff"

android:text="Sumis "
android:textSize="28sp"
android:id="@+id/TextView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Note.Theelementandroid:inputStyle
indicatesthefirstvaluecouldbenumeric,with
optionaldecimalsandsign.
12.Android–Intents–Part2
Intents
Tutorial1.ActivityExcahange
Step2. CreateGUIforActivity2(main2.xml)
<?xmlversion="1.0"encoding="utf‐8"?>
<LinearLayout xmlns:android=" />android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff888888">
<
TextView
<
TextView
android:text="Activity2"
android:textSize="22sp"
android:background="#ff0000ff"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<EditText
android:text="Datareveived "
android:id="@+id/etDataReceived"

android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button
android:text="Done‐ Callback"
android:id
="
@+id/
btnDone
"
1212
android:id
@+id/
btnDone
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
10/18/2011
7
12.Android–Intents–Part2
Intents
Tutorial1.ActivityExcahange
Step3. Activity1.Afterclickingthebuttondata,fromUIisputinabundleandsentto
Activity2.Alistenerremainsalertwaitingforresultstocomefromthecalledactivity.
package cis493.matos.intent2b;
//Activity1:gettwoinputvaluesfromuser,puttheminabumble.callActivity2toaddthetwonumbers,showresult
import ;
public
class
Activity1
extends

Activity {
public
class
Activity1

extends
Activity

{
EditText txtVal1;
EditText txtVal2;
TextView lblResult;
ButtonbtnAdd;
@Override
public void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
txtVal1 =(EditText)findViewById(R.id.EditText01);
txtVal2 =(EditText)findViewById(R.id.EditText02);
lblResult =(TextView)findViewById(R.id.TextView01);
btnAdd =(Button)findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(new OnClickListener(){
@Override
public void onClick(Viewv){
//getvaluesfromtheUI
Doublev1=Double.parseDouble(txtVal1.getText().toString());
Double v2
=
Double.
parseDouble

(
txtVal2
.getText().
toString
());
1313
Double

v2
 
Double.
parseDouble
(
txtVal2
.getText().
toString
());
//createintenttocallActivity2
IntentmyIntentA1A2=new Intent(Activity1.this, Activity2.class);
//createacontainertoshipdata
BundlemyData =new Bundle();
//add<key,value>dataitemstothecontainer
myData.putDouble("val1",v1);
myData.putDouble("val2",v2);
//attachthecontainertotheintent
myIntentA1A2.putExtras(myData);
//callActivity2,tellyourlocallistenertowait
forresponse
startActivityForResult(myIntentA1A2,101);
}

});
}//onCreate
12.Android–Intents–Part2
Intents
Tutorial1.ActivityExcahangecont.
Step3.Activity1.Afterclickingthebuttondata,fromUIisputinabundleandsentto
Activity2.Alistenerremainsalertwaitingforresultstocomefromthecalledactivity.
//////////////////////////////////////////////////////////////////////////////
//locallistenerreceivingcallbacksfromotheractivities
@Override
protected void onActivityResult(int requestCode,int resultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
try {
if ((requestCode ==101)&&(resultCode ==Activity.RESULT_OK)){
BundlemyResults =data.getExtras();
Doublevresult =myResults.getDouble("vresult");
lblResult.setText("Sumis" +vresult);
}
}
catch (Exceptione){
lbl l
(
"bl
"
d
" "
ld
)
1414
lbl

Resu
l
t.setText
(
"
Pro
bl
ems‐
"
+requestCo
d
e+
"

"
+resu
l
tCo
d
e
)
;
}
}//onActivityResult
}//Activity1
10/18/2011
8
12.Android–Intents–Part2
Intents
Tutorial1.ActivityExcahangecont.

Step4. Activity2.CalledfromActivity1.Extractsinputdatafromthebundleattachedto
theintent.Performslocalcomputation.Addsresulttobundle.ReturnsOKsignal.
package cis493.matos.intent2b;
import ...;
//returnsendinganOKsignaltocallingactivity
setResult(Activity.RESULT_OK,myLocalIntent);
//experiment:removecomment
public class Activity2extends Activityimplements OnClickListener{
EditText dataReceived;
ButtonbtnDone;
@Override
protected void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
dataReceived =(EditText)findViewById(R.id.etDataReceived);
btnDone =(Button)findViewById(R.id.btnDone);
btnDone.setOnClickListener(this);
//pickcallmadetoActivity2viaIntent
IntentmyLocalIntent =getIntent();
//lookintothebundlesenttoActivity2fordataitems
BundlemyBundle =myLocalIntent.getExtras();
Double v1
=
myBundle.getDouble
(
"
val1
"
);
//finish();

}//onCreate
@Override
public void onClick(Viewv){
//closecurrentscreen‐ terminateActivity2
finish();
}//onClick
}//Activity2
1515
Double

v1
 
myBundle.getDouble
(
val1
);
Doublev2=myBundle.getDouble("val2");
//operateontheinputdata
DoublevResult =v1+v2;
//forillustrationpurposes.showdatareceived&result
dataReceived.setText("Datareceivedis\n"
+"val1=" +v1+"\nval2=" +v2
+"\n\nresult=" +vResult);
//addtothebundlethecomputedresult
myBundle.putDouble("vresult",
vResult);
//attachupdatedbumbletoinvokingintent
myLocalIntent.putExtras(myBundle);
12.Android–Intents–Part2
Intents

Tutorial1.ActivityExcahangecont.
Step5. Updatetheapplication‘smanifest.Addnew<activity>tagfor“Activity2“
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=" />package="cis493.matos.intent2b"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Activity1"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Activity2">
</activity>
/
add
1616
<
/
application>
<uses-sdk android:minSdkVersion="4" />
</manifest>
10/18/2011
9
12.Android–Intents–Part2
Intents
Tutorial2::Activity1invokesActivity2usinganIntent.Abundleconatingasetof

differentdatatypes issentback‐and‐forthbetweenbothactivities
(see12IntentDemo3.zip).
Thisexampleissimilartoprevious.
Youmaywanttoskipit.
1717
//Activity1:Invokingauser‐definedsub‐activitysendingandreceivingresultsfromthesub‐activity
package cis493.intents3;
12.Android–Intents–Part2
Intents
Tutorial2:Activity1invokesActivity2usinganIntent.Abundleconatingasetof
differentdatatypes issentback‐and‐forthbetweenbothactivities
(see12IntentDemo3.zip).
import ...;
public class Activity1extends Activity{
TextView label1;
TextView label1Returned;
ButtonbtnCallActivity2;
//arbitraryinterprocess communicationID(justanickname !)
private final int IPC_ID =(int)(10001*Math.random());
@Override
public void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
try {
setContentView(R.layout.main);
lbl1
(
TtVi
)
fi dVi B Id
(R id

lbl1
)
l
a
b
e
l1
=
(
T
ex
tVi
ew
)

fi
n
dVi
ew
B
y
Id
(R
.
id
.
l
a
b
e

l1
)
;
label1Returned =(TextView)findViewById(R.id.label1Returned);
btnCallActivity2 =(Button)findViewById(R.id.btnCallActivity2);
btnCallActivity2.setOnClickListener(new Clicker1());
//fordemonstrationpurposes‐ showintoplabel
label1.setText("Activity1(sending )\n\n"
+"RequestCode ID:" +IPC_ID +"\n"
+"myString1:HelloAndroid" +"\n"
+"myDouble1:3.141592" +"\n"
+"myIntArray:{123}");
}catch (Exceptione){
Toast.makeText(getBaseContext(),e.getMessage(),Toast.LENGTH_LONG
).show();
}
}//onCreate
1818
10/18/2011
10
private class Clicker1implements OnClickListener {
public void onClick(Viewv){
try {
12.Android–Intents–Part2
Intents
Tutorial2:Activity1invokesActivity2usinganIntent.Abundleconatingasetof
differentdatatypes issentback‐and‐forthbetweenbothactivities
(see12IntentDemo3.zip).
//createanIntenttotalktoActivit y2
IntentmyIntentA1A2=new Intent(Activity1.this,

Activity2.class);
//prepareaBundleandaddthedatapiecestobesent
BundlemyData =new Bundle();
myData.putInt("myRequestCode",IPC_ID);
myData.putString("myString1","HelloAndroid");
myData.putDouble("myDouble1",3.141592);
int []myLittleArray ={1,2,3};
myData.putIntArray("myIntArray1",myLittleArray);
//bindthe
BundleandtheIntentthattalkstoActivity2
myIntentA1A2.putExtras(myData);
//callActivity2andwaitforresults
startActivityForResult(myIntentA1A2,I PC_ID);
}catch (Exceptione){
Toast.makeText(getBaseContext(),e.getMessage(),Toast.LENGTH_LONG).show();
}
}//onClick
}//Clicker1
1919
@Override
protected void onActivityResult(int requestCode,int resultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
{
12.Android–Intents–Part2
Intents
Tutorial2:Activity1invokesActivity2usinganIntent.Abundleconatingasetof
differentdatatypes issentback‐and‐forthbetweenbothactivities
(see12IntentDemo3.zip).
try
{

//checkthattheseresultsareforus
if (IPC_ID ==requestCode){
//Activity2isover‐ seewhathappened
if (resultCode ==Activity.RESULT_OK){
//good‐ wehavesomedatasentbackfromActivity2
BundlemyReturnedData =data.getExtras();
StringmyReturnedString1=myReturnedData.getString("myReturnedString1");
DoublemyReturnedDouble1=myReturnedData.getDouble("myReturnedDouble1");
StringmyReturnedString2=myReturnedData.getString("myCurrentTime");
//displayin
thebottomlabel
label1Returned.setText(
"requestCode:" +requestCode +"\n"
+"resultCode:" + resultCode +"\n"
+"returnedString1:" +myReturnedString1+"\n"
+"returnedDouble:" + Double.toString(myReturnedDouble1)+"\n"
+"returnedString2:" +myReturnedString2);
}else {
//userpressedtheBACKbutton
label1.setText("SelectionCANCELLED!");
}//if
}
}catch (Exceptione){
Toast.makeText(getBaseContext(),e.getMessage(),Toast.LENGTH_LONG).show();
}//try
}//onActivityResult
}//AndroIntent1
2020
10/18/2011
11

12.Android–Intents–Part2
Intents
Tutorial2:Activity2iscalledtocooperatewithActivity1.Dataistransferredinabundle
//Activity2.Thissubactivity receivesabundleofdata,performssomeworkonthedataand,returnsresultstoActivity1.
package cis493.intents3;
import
;
import
...
;
public class Activity2extends Activity{
TextView label2;
TextView spyBox;
ButtonbtnCallActivity1;
@Override
public void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
//bindUIvariablestoJavacode
label2 =(TextView)findViewById(R.id.label2);
spyBox =(TextView)findViewById(R.id.spyBox);
btnCallActivity1 =(Button)findViewById(R.id.btnCallActivity1);
btnCallActivity1.setOnClickListener(new Clicker1());
// ll hdl
h b ll d!
2121
//
createa
l
oca

l
Intent
h
an
dl
er–we
h
ave
b
eenca
ll
e
d!
IntentmyLocalIntent =getIntent();
//grabthedatapackagewithallthepiecessenttous
BundlemyBundle =myLocalIntent.getExtras();
//extracttheindividualdatapartsofthebundle
int int1=myBundle.getInt("myRequestCode");
Stringstr1=myBundle.getString("myString1");
double dob1=myBundle.getDouble("myDouble1");
int[]arr1=myBundle.getIntArray("myIntArray1");
12.Android–Intents–Part2
Intents
Tutorial2:Activity2iscalledtocooperatewithActivity1.Dataistransferredinabundle
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//WhatifIdon'tknowthekeynames?
//whatcameinthebundle?.Thisfragmentshowshowtouse
//bundlemethodstoextractitsdata.Needtoknow
//ANDROIDTYPES:
// class [I (array integers)

//

class

[I

(array

integers)
//class[J(arraylong)
//class[D(arraydoubles)
//class[F(arrayfloats)
//classjava.lang.xxx (wherexxx=Integer,Double, )
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Stringspy="\nSPY>>\n";
Set<String>myKeyNames =myBundle.keySet();
for (StringkeyName :myKeyNames){
Serializable keyValue =myBundle.getSerializable(keyName);
StringkeyType =keyValue.getClass().toString();
if (keyType.equals("classjava.lang.Integer")){
keyValue =Integer.parseInt(keyValue.toString());
}
else if (keyType.equals("classjava.lang.Double")){
keyValue =Double.parseDouble(keyValue.toString());
}
2222
}
else if (keyType.equals("classjava.lang.Float")){
keyValue =Float.parseFloat(keyValue.toString());
}

else if (keyType.equals("class[I")){
int[]arrint =myBundle.getIntArray(keyName);
int n=arrint.length;
keyValue =arrint[n‐1];//showonlythelast!
}
else {
keyValue =(String)keyValue.toString();
}
spy+=keyName +":" +keyValue +"" +keyType +"\n" ;
}
spyBox.append(spy);
10/18/2011
12
12.Android–Intents–Part2
Intents
Tutorial2:Activity2iscalledtocooperatewithActivity1.Dataistransferredinabundle
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//dosomethingwiththedatahere(forexample )
StringstrArr ="{";
int sumIntValues =0;
for (int i=0;i<arr1.length;i++){
sumIntValues
+=
arr1[
i
];
sumIntValues

arr1[
i

];
strArr +=Integer.toString(arr1[i])+"";
}
strArr +="}theirsumis=" +sumIntValues;
//showarrivingdatainGUIlabel2
label2.append("\n\nActivity2(receiving )\n\n" +
"Caller'srequestCode ID:" +int1+"\n" +
"myString1:" +str1+"\n" +
"myDouble1:" +Double.toString(dob1)+"\n" +
"myIntArray1:" +strArr);
//nowgobackto
myActivity1withsomenewdatamadehere
double someNumber =sumIntValues +dob1;
myBundle.putString("myReturnedString1","AdiosAndroid");
myBundle.putDouble("myReturnedDouble1",someNumber);
myBundle.putString("myCurrentTime",new Date().toLocaleString());
myLocalIntent putExtras
(
myBundle
);
2323
myLocalIntent
.
putExtras
(
myBundle
);
//alldone!
setResult(Activity.RESULT_OK,myLocalIntent);
}//onCreate

private class Clicker1implements OnClickListener {
public void onClick(Viewv){
//clearActivity2screensoActivity1couldbeseen
finish();
}//onClick
}//Clicker1
}//Activity2
<?
xml
version
="
1.0
"
encoding
="
utf

8
"
?>
android:layout width
="
fill parent
"
12.Android–Intents–Part2
Intents
Tutorial2:Activity2iscalledtocooperatewithActivity1.Dataistransferredin
abundle
Layout:main.xml
<?

xml

version
1.0

encoding
utf
8
?>
<LinearLayout
android:id="@+id/linLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android=" />android:background="#ff555555">
<TextView
android:id="@+id/caption1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffff3300"
android:padding="4sp"
android:text="Activity1"
android:textSize
="
20px
"
android:layout
_
width
fill

_
parent
android:layout_height="wrap_content"
android:background="#ff0033cc"
android:text="DatatobesenttoSubActivity:"
android:layout_margin="4dip"
android:textStyle="bold|normal">
</TextView>
<Button
android:id="@+id/btnCallActivity2"
android:layout_width="149px"
android:layout_height="wrap_content"
android:text="CallActivity2"
android:textStyle="bold"
android:padding="6sp"
>
</
Button
>
android:textSize
20px
android:textStyle="bold"
android:textColor="#ff000000"
>
</TextView>
<TextView
android:id="@+id/widget107"
android:layout_width="fill_parent"
android:layout_height="2sp"
>

</TextView>
<TextView
android:id="@+id/label1"
</
Button
>
<TextView
android:id="@+id/label1Returned"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ff0033cc"
android:text="DatareturnedbyActivity2"
android:layout_margin="4dip"
android:textStyle="bold|normal">
</TextView>
</LinearLayout>
2424
10/18/2011
13
<?
xml
version
="
1.0
"
encoding
="
utf

8

"
?>
android:layout height
="
wrap content
"
12.Android–Intents–Part2
Intents
Tutorial2:Activity2iscalledtocooperatewithActivity1.Dataistransferredin
abundle
Layout:main2.xml
<?
xml

version
1.0

encoding
utf
8
?>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android=" />android:background="#ffffff77">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"

android:background="#ffff9900"
android:padding="4sp"
android:text="Activity2"
android:textSize="20px"
android:textStyle
="
bold
"
android:layout
_
height
wrap
_
content
android:background="#ff0033cc"
android:text="DataReceivedfromActivity1 "
android:textStyle="normal"
android:layout_margin="7dip">
</TextView>
<Button
android:id="@+id/btnCallActivity1"
android:layout_width="149px"
android:layout_height="wrap_content"
android:padding="6sp"
android:text="CallBack Activity1"
android:textStyle="bold"
>
</Button>
android:textStyle
bold

>
</TextView>
<TextView
android:id="@+id/widget107"
android:layout_width="fill_parent"
android:layout_height="2sp"
>
</TextView>
<TextView
android:id="@+id/label2"
android:layout_width="fill_parent"
<TextView
android:id="@+id/spyBox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ff0033cc"
android:text="(SPY)DataReceivedfromActivity1 "
android:textStyle="normal"
android:layout_margin="7dip">
</TextView>
</LinearLayout>
2525
12.Android–Intents–Part2
Intents
AppendixA.BundlingComplexObjects
ExtendingTutorial2toallowActivity1tocreatealocalobject
andpassittoActivity2intotheIPCbundleasserializeddata.
Step1.CreateanObject.MakesureitimplementsSerializable interface.
package cis493.intents3;
import java.io.Serializable;

public class Personimplements Serializable {
private static final long serialVersionUID =1L;
private StringfirstName;
private StringlastName;
2626
public Person(StringfirstName,StringlastName){
super();
this.firstName =firstName;
this.lastName =lastName;
}
public StringgetFullName(){
return firstName +"" +lastName;
}
}//Person
10/18/2011
14
12.Android–Intents–Part2
Intents
AppendixA.BundlingComplexObjects
ExtendingTutorial2toallowActivity1tocreatealocalobjectandpassit
toActivity2intotheIPCbundleasserializeddata.
St 2
Mdif
Atiit1
Ct it f th P l d dd it t th
St
ep
2
.
M

o
dif
y
A
c
ti
v
it
y
1
.
C
rea
t
ean
i
ns
t
anceo
f

th
e
P
ersonc
l
assan
d
a
dd


it

t
o
th
e
bundleusingthemethodputSerializable (key,object);
//prepareaBundleandaddthedatapiecestobesent
BundlemyData =new Bundle();
.. ..
//creatinganobjectandpassingitintothebundle
Personp1=new Person("Maria","Macarena");
myData.putSerializable("person",p1);
2727
//bindtheBundleandtheIntentthattalkstoActivity2
myIntentA1A2.putExtras(myData);
//callActivity2andwaitforresults
startActivityForResult(myIntentA1A2,IPC_ID);
12.Android–Intents–Part2
Intents
AppendixA.BundlingComplexObjects
ExtendingTutorial2toallowActivity1tocreatealocalobjectandpassit
toActivity2intotheIPCbundleasserializeddata.
St 3
Mdif
Atiit2
Ct th it f th P l i th
St
ep

3
.
M
o
dif
y
A
c
ti
v
it
y
2
.
C
ap
t
ure
th
e
i
ns
t
anceo
f

th
e
P
ersonc

l
assus
i
ng
th
e
methodgetSerializable (key);
//createalocalIntenthandler–wehavebeencalled!
IntentmyLocalIntent =getIntent();
//grabthedatapackagewithallthepiecessenttous
BundlemyBundle =myLocalIntent.getExtras();
//extracttheindividualdatapartsofthebundle
.. ..
Person p (Person)
myBundle getSerializable
(
"person"
);
2828
Person

p
=
(Person)

myBundle
.
getSerializable
(
"person"

);
Stringpval =p.getFullName();
.. ..
Note:Theobjectpersonhasacomplexclasstypereceivedas:
classpackageName.Person
10/18/2011
15
12.Android–Intents
Intents
Questions?
292929

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×