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