Tuesday, September 12, 2017

Truyền dữ liệu giữa các activity trong Android

Truyền dữ liệu giữa các activity là việc quan trọng, thường xuyên phải làm khi lập trình.
Ta sẽ làm truyền đi trước.
Mở class MainActivity ra, để ví dụ ta sẽ chuyển chữ và số và cả mảng chữ sang class second.
Copy các dòng sau lên trên Override
int sovidu=2010;
String a="Năm đã chuyển sang là";
String[] qua = { "Pear","Banana", "Cashew", "Orange", "Water melon", "Peach", "Grape", "Mango", "Plum" };

Thêm các dòng sau vào nút b2, sửa dòng Intent, chữ cuối thành second.class, để nó sẽ chuyển qua class second.
Bundle bun = new Bundle();
bun.putString("chu",a );
bun.putInt("so", sovidu);
bun.putStringArray("gi", qua);
in.putExtras(bun);
Hãy nhìn vào code, ở trên ta khai báo số, chữ và mảng, để chuyển đi ta dùng đúng tên đã khai báo và phía trước có gán Key hay mã để sang bên kia nhận ta cũng dùng mã đó. Mã này tùy ý, nhưng không được trùng nhau cho cùng kiểu giá trị.
Sang class second, hãy thêm vào file ac2.xml một textView xuống dưới
<TextView
 android:id="@+id/tv4"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center_horizontal"
 android:layout_marginTop="5dp"       
 android:textColor="#800000"
 android:textSize="20sp" />

Tại second.java, ta khai báo thêm 2 textView tv2, tv3 và tham chiếu nó tới các textView trong file ac2.xml có id là tv, tv4.
tv2 = (TextView) findViewById(R.id.tv);
tv3 = (TextView) findViewById(R.id.tv4);
Hiện textView trên cùng đang có chữ “Nhập năm dương lịch”, ta chuyển chữ “Năm đã chuyển sang là” sang nó.
Khai báo một mảng để nhận mảng sang.
String[] mang = new String[9];
Copy các dòng sau xuống dưới dòng findViewByid của cái bút b2
Intent in = getIntent();
Bundle bun = in.getExtras();       
int sosang = bun.getInt("so");           
String chusang = bun.getString("chu");
mang=bun.getStringArray("gi");
e.setText(sosang+"");
tv2.setText(chusang+"");
tv3.setText("Phần tử thứ nhất là: "+mang[0]);
Ta chuyển cái gì sang thì lấy cái đó, dùng đúng Key đã ghi bên class trước. Khi set chữ vào editText cần thêm dấu cách rỗng để biến nó thành String, nếu không sẽ bị lỗi. Tại textView tv3 ta set chữ ra là phần tử thứ nhất của mảng đã chuyển sang.
Nếu bạn làm đúng, màn hình class second trông như sau.

Dòng dưới cùng ta lấy phần tử đầu tiên của mảng đã được lấy ra. Bạn có thể thay vào phần tử nào cũng được.
Chạy thử để xem kết quả.


Nếu muốn truyền dữ liệu ngược trở lại Activity đầu, bạn tham khảo bài sau.

No comments:

Post a Comment