一、直接传递参数
+ K) q, e k! L# k/ ~1、发送
1 R: ?! i( l2 @# b$ h4 n% y# q- //实例化一个新的窗口,并指定从那个窗口到哪个窗口
5 U+ ~ W. ~+ o2 `9 S) a, R - intent = new Intent(MainActivity.this,secondwindow.class);
* \+ d" H* y1 Q- \+ |3 \" n - //将数据发送到intent中5 o% H4 B* u& R0 x4 Z
- intent.putExtra("name",ed_text.getText().toString().trim() );; L9 m0 |) }" m& Q+ `
- //启动新窗口
; T. p" z4 d2 R- F- N5 } Z# s: } - startActivity(intent);
复制代码
8 `0 {7 S+ T+ b% }4 E: @2、接收. o1 p# b# n5 O f Y* w t# [: ~ E5 f0 Z
- //获取intent
+ a0 r8 ]9 {$ X) x - Intent intent=getIntent();% h1 C2 Y% z1 m H1 x# J4 ^5 O
- //获取数据并显示到text中' {6 r* a7 O0 ]$ n# s4 ^/ n
- textvew.setText(intent.getStringExtra("name"));
3 y) z& @8 U% f0 U' ?0 h
复制代码
; W/ n. Z5 E. b6 O" [二、使用Bundle绑定数据9 \7 a- ~2 j1 g2 v6 n8 [' y$ A+ W" K: `
1.新建一个Class
! X8 B( [" T1 k2 H9 K6 U! T) }5 g) R) B9 z" \1 H
& g" ? e) E; s+ W4 J
1 v7 b& k4 d( d& J7 E小技巧:输入完private String name;private int age;两个属性后需只需要在studio的菜单栏code->generation->Getter setter即可自动生成这两个方法,如下所示。
: a( S9 ], N# \5 f' {6 D2 a9 c# Y+ C
& _: w' o9 F0 S, @- W7 \
! ~( w/ r# a$ h9 o4 _8 c. R代码如下:
( W3 l, e: [0 v' L$ F) F! A$ Q- 5 y' n% E9 n0 G% q l5 _6 Y
- public class user implements Serializable {7 ?/ j" h! ~9 m4 B
- F- ]" G. q/ B8 y- @1 x: l
8 u7 V3 L* W, \/ s- u; W- private String name; t7 [) v; B- T# N4 @
- private int age;
( M5 p+ J, {) U* `
" V7 \0 `& X6 H- public String getName() {
1 [! [) u# M, K0 @ - return name;9 D ?5 B. {- \; Z
- }
" H/ L/ w/ Z) W6 N$ X
A6 J' Q, C( G8 }- public void setName(String name) {- w& I# C' X; x9 \0 x) c
- this.name = name;
- ^- w5 e" K( \$ P/ D; k% f - }
# b3 p G! N0 U7 F2 r! c' E- d
7 r( q8 M0 b) m9 |% f* V- public int getAge() {6 H1 ^3 o1 G; u! m
- return age;
- x+ t. l# a( Y7 W7 T; _ - }4 P: E. N- C! X# [; H @
9 Y( ]# a5 G$ A# h# D: \- public void setAge(int age) {
9 ~% B6 l8 ~+ N2 X - this.age = age;
3 P6 T1 S* W3 ` - }) W' ?7 I% d/ J: G; \! L5 I
) M9 f- r7 p# c: [3 m! w2 ?
/ C$ k! b* Q# k. T- }. H6 A6 E8 z: x/ }6 S2 K, n, f z# V
复制代码 B7 @5 J& b) F6 L% }: C
2.将数据绑定并发送出去' r, d, a$ s/ c
代码如下(示例):- intent= new Intent(MainActivity.this,thirdwindow.class);
$ G% M' Y n9 {' T2 W, C1 [ - //bundle对象. p$ g8 z( E& Y1 ]% C$ W2 Z
- Bundle b=new Bundle();
+ J/ c7 u% v/ M1 A - //数据对象, y7 I" Z+ w( s
- user user=new user();
/ N* d: @& N( y# T5 M9 R) }: z8 P. t - user.setAge(180);6 _; z) K6 @3 `. V5 r: \1 J4 } J
- user.setName("李百万");
; i3 t$ \* n6 f9 n - //将数据打包进bundle中& @8 Q: ~, Z& T% r. F* e# v( H
- b.putSerializable("user", (Serializable) user);
- V( q6 q/ O9 U* c) N& O - //将打包好的bundle发送出去+ A0 z Q* V8 w+ T3 C% o% c. X. t
- intent.putExtras(b);
+ {) R* t- U! \; j1 Z - startActivity(intent);
复制代码 6 y# ?# ~ m$ w4 }+ x$ V# n
3.接收界面接收数据) {% s7 A7 O( _; N
- //获得绑定的数据包+ y: r7 D1 V# x" @$ k# u
- Bundle bundle = getIntent().getExtras();
9 k5 i. \- c) [7 r. C: x - user user=(user) bundle.getSerializable("user");
/ O* }4 x# E( ?% ^ s: h/ O - String str="名字:"+user.getName()+" 年龄:"+user.getAge();
复制代码 w6 _9 t D: S$ y
+ _' B L% R1 j$ E0 W8 E
|