如果一個Activity開啟新的必且等待他要回傳的值那寫法如下

M0101要呼叫M0102並等待他回傳值要使用startActivityForResult並且宣告onActivityResult來處理Activity返回時所帶的參數

startActivityForResult(intent, 給Activity一個編號型態為int);
當值回傳再以requestCode來判斷.



呼叫M0102的寫法
Intent intent = new Intent(M0101.this, M0102.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// startActivity(intent);
startActivityForResult(intent, m0102);










M0101內地onActivityResult方法

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@Override //接startActivityForResult() request 的return值
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
int get_resultCode = resultCode;
switch(requestCode){
case requestCode01 :
if(data != null){
try{
String A = data.getExtras().getString("A");
String B = data.getExtras().getString("B");
String C = data.getExtras().getString("C");
Log.e("gggg", A + " . " + B + " . "+ C +" . ");
v_m0101t001.setText(A);
v_m0101t002.setText(B);
v_m0101t003.setText(C);

s_height = A;
s_weight = B;
s_japanSize = C;
}catch (NullPointerException e){ }
}
break;
case requestCode02 :
if(data != null){
try{
String A = data.getExtras().getString("A");
String B = data.getExtras().getString("B");
String C = data.getExtras().getString("C");
Log.e("gggg", A + " . " + B + " . "+ C +" . ");
v_m0101t004.setText(A);
v_m0101t005.setText(B);
v_m0101t006.setText(C);



s_long = A;
s_wide = B;
s_round = C;
}catch (NullPointerException e){ }
}
break;
case m0102 :
if(data != null){
try{
String A = data.getExtras().getString("size");
v_m0101t004.setText(A);
s_long = A;

}catch (NullPointerException e){ }
}
}
}










M0102結束回傳時的寫法

1
2
3
4
5
6
 Intent intent = new Intent();
Bundle bundle=new Bundle();
bundle.putString("size", japsize+"" );
intent.putExtras(bundle);
setResult(RESULT_OK,intent);
finish();

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()