- Nhớ là phải cấu hình InputDataActivity dưới dạng Dialog: Mở Manifest để cấu hình như hình bên dưới:
- chọn Theme: @android:style/Theme.Holo.Dialog
-Tại màn hình trên ta chọn đúng Activity muốn làm Dialog rồi tìm tới thuộc tính Theme, nhấn vào nút “Browse”…:
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
| package tranduythanh.com; import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; public class MainActivity extends Activity { public static final int REQUEST_CODE_INPUT= 113 ; public static final int RESULT_CODE_SAVE1= 115 ; public static final int RESULT_CODE_SAVE2= 116 ; Button btnInputData; ListView lvData; ArrayList<Integer>arrData= new ArrayList<Integer>(); ArrayAdapter<Integer>adapter= null ; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnInputData =(Button) findViewById(R.id.btnopenactivity); btnInputData.setOnClickListener( new OnClickListener() { @Override public void onClick(View arg0) { //Mở Activity với REQUEST_CODE_INPUT Intent intent= new Intent(MainActivity. this , InputDataActivity. class ); //gọi startActivityForResult startActivityForResult(intent, REQUEST_CODE_INPUT); } }); //đoạn code dưới này học nhiều rồi, ko nói lại lvData=(ListView) findViewById(R.id.lvdata); adapter= new ArrayAdapter<Integer> ( this , android.R.layout.simple_list_item_1, arrData); lvData.setAdapter(adapter); } /** * Xử lý kết quả trả về ở đây */ @Override protected void onActivityResult( int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super .onActivityResult(requestCode, resultCode, data); //Kiểm tra có đúng requestCode =REQUEST_CODE_INPUT hay không //Vì ta có thể mở Activity với những RequestCode khác nhau if (requestCode==REQUEST_CODE_INPUT) { //Kiểm trả ResultCode trả về, cái này ở bên InputDataActivity truyền về //có nó rồi thì xử lý trở lên thông thường switch (resultCode) { case RESULT_CODE_SAVE1: //giá trị từ InputDataActivity int v1= data.getIntExtra( "data" , 0 ); arrData.add(v1*v1); adapter.notifyDataSetChanged(); break ; case RESULT_CODE_SAVE2: //giá trị từ InputDataActivity int v2= data.getIntExtra( "data" , 0 ); arrData.add(v2); adapter.notifyDataSetChanged(); break ; } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true ; } } |
- Chúng ta nên khai báo hằng số cho RequestCode và ResultCode như ở trên, dựa vào nó để chúng ta xử lý kết quả trả về.
- Bạn qua xử lý code của InputDataActivity.java:
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
53
54
55
56
57
58
59
60
61
| package tranduythanh.com; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class InputDataActivity extends Activity { Button btnSave1,btnSave2; EditText editNumber; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_input_data); btnSave1=(Button) findViewById(R.id.btnSave1); btnSave2=(Button) findViewById(R.id.btnSave2); btnSave1.setOnClickListener( new OnClickListener() { @Override public void onClick(View arg0) { //Gửi thông điệp là lưu bình phương sendToMain(MainActivity.RESULT_CODE_SAVE1); } }); editNumber=(EditText) findViewById(R.id.editNumber); btnSave2.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { //Gửi thông điệp là lưu số gốc sendToMain(MainActivity.RESULT_CODE_SAVE2); } }); } /** * hàm xử lý gửi kết quả về mainactivity * khi hàm này được gọi thì lập tức onActivityResult * ở MainActivity sẽ sảy ra đem theo ResultCode và Intent * @param resultcode */ public void sendToMain( int resultcode) { Intent intent=getIntent(); int value= Integer.parseInt(editNumber.getText()+ "" ); intent.putExtra( "data" , value); setResult(resultcode, intent); finish(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_input_data, menu); return true ; } } |
- Bạn nhìn vào hàm sendToMain, khi hàm này vừa kết thúc thì lập tập onActivityResult của MainActivity sẽ sảy ra
onActivityResult(int requestCode, int resultCode, Intent data)
Ta kiểm tra requestCode và resultCode cho đúng
requestCode là bên MainActivity dùng để triệu gọi một Activity bất kỳ nào đó
resultCode là kết quả trả về trong hàm setResult(resultcode, intent); của sub Activity nào đó. Hàm này cho chúng ta biết kết quả trả về là code nào và đồng thời cho ta biết luôn Intent của nó. Dựa vào Intent này mà trong onActivityResult ta có thể dễ dàng lấy thông số ra (đối số thứ 3).
- Bạn có thể tải code mẫu đầy đủ ở đây: http://www.mediafire.com/?d8if4q9asgso18q
Chúc các bạn thành công.
0 nhận xét:
Đăng nhận xét