Bài 24: Intent Trong Android(P6)

Leave a Comment
- 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:
24_intent_17
- 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”…:
24_intent_18-Bây giờ bạn xem xử lý code của MainActivity.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
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