Trong khi sử dụng đối tượng Intent chúng ta có thể đặt các loại dữ liệu khác nhau trực tiếp bằng cách sử dụng putExtra()
. Chúng tôi cũng có thể đặt những dữ liệu bổ sung này vào một đối tượng Bundle
và thêm nó vào Intent
. Vậy tại sao chúng ta cần Bundle
nếu chúng ta có thể sử dụng trực tiếp Intent
?Quan hệ Intent and Bundle
Trả lời
Đôi khi bạn cần phải vượt qua chỉ là một few variables
hoặc values
một số khác Activity
, nhưng những gì nếu bạn có một bunch of variable's or values
mà bạn cần phải vượt qua để khác nhau Activities
. Trong trường hợp đó, bạn có thể sử dụng Bundle
và chuyển số Bundle
đến mức yêu cầu Activity
một cách dễ dàng. Thay vì chuyển từng biến đơn.
Giả sử bạn cần chuyển một số Bundle
từ một số Activity
cho một số khác. Đó là lý do tại sao Intent
cho phép bạn thêm Bundle
s làm trường bổ sung.
EDIT: Ví dụ, nếu bạn muốn vượt qua một hàng từ một cơ sở dữ liệu cùng với một số dữ liệu khác đó là rất thuận tiện để đặt hàng này thành một Bundle
và thêm Bundle
này đến Intent
như một trường bổ sung.
tôi đang hỏi tại sao? chúng ta sẽ đặt cùng một dữ liệu bổ sung trong gói và thêm bó đó vào đối tượng intent.that chúng ta có thể đặt trực tiếp vào đối tượng intent.Is không phải là nó? –
Không, không phải vậy. Bạn chỉ có thể có một 'Bundle' mà bạn cần phải vượt qua. Bạn có thực sự muốn sao chép trường theo trường thành 'Intent'. Và nếu các khóa của 'Bundle' và' Intent' sẽ chồng lên nhau? Bạn không thể biết tất cả những gì mọi người làm như vậy chỉ cần nhớ rằng bạn có thể đặt một 'Bundle' vào một' Intent' và khi bạn cần nó, bạn sẽ biết phải làm gì. – Michael
Một ví dụ nhỏ: bạn muốn chuyển một hàng từ cơ sở dữ liệu cùng với một số dữ liệu khác. Rất thuận tiện để lưu trữ hàng này trong một 'Gói '. Trong một trong các ứng dụng của tôi, tôi sử dụng một danh sách 'Bundle' để truyền một số hàng từ một cơ sở dữ liệu. – Michael
Như bạn thấy, Intent
lưu trữ nội bộ trong một Bundle
.
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
Tôi đoán những gì @Lalit có nghĩa là giả hoạt động của bạn luôn luôn vượt qua các biến cùng với ý đồ khác nhau, bạn có thể lưu trữ tất cả trong số họ trong một đơn Bundle
trong lớp học của bạn và chỉ cần sử dụng bất cứ khi nào bạn cần intent.putExtras(mBundle)
cùng một bộ thông số.
Điều đó sẽ làm cho việc thay đổi mã dễ dàng hơn nếu một trong các tham số trở nên lỗi thời trong mã của bạn. Giống như:
public class MyActivity {
private Bundle mBundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
mBundle = new Bundle();
mBundle.putString("parameter1", value1);
mBundle.putString("parameter2", value2);
}
private void openFirstActivity() {
Intent intent = new Intent(this, FirstActivity.class);
intent.putExtras(mBundle);
startActivity(intent);
}
private void openSecondActivity() {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtras(mBundle);
startActivity(intent);
}
}
OBS: Như đã trình bày rồi, Intent
lưu trữ các thông số trong một nội Bundle
, và nó đáng chú ý là khi bạn gọi putExtras
, bó Ý định nội bộ không trỏ đến cùng một đối tượng, nhưng tạo một bản sao của tất cả các biến thay vào đó, bằng cách sử dụng một đơn giản for
như thế này:
for (int i=0; i<array.mSize; i++) {
put(array.keyAt(i), array.valueAt(i));
}
- 1. Quan sátCollection and threading
- 2. Bundle Tên và Bundle Display Name
- 3. Mối quan hệ giữa Mã định danh Bundle trong Info.plist và ID ứng dụng và iTunes Connect
- 4. Sqlalchemy, mối quan hệ và mối quan hệ
- 5. Cách giữ quan hệ khóa ngoại nhất quán trong hệ thống quan hệ "hình kim cương" của mối quan hệ
- 6. Intent Intent không được gọi là
- 7. Gửi Intent bên trong của Intent
- 8. Mối quan hệ Laravel
- 9. meta_query, làm thế nào để tìm kiếm bằng cách sử dụng cả hai quan hệ OR & AND?
- 10. Phép tính quan hệ Tuple
- 11. Yii nhiều mối quan hệ
- 12. Intersection của hai quan hệ
- 13. Fetch Mối quan hệ Objects
- 14. mẫu và quan hệ dao
- 15. BadParcelableException - BroadcastReceiver intent crash
- 16. Fragments onCreateView() bundle. Nó đến từ đâu?
- 17. Resource Bundle Spring
- 18. Android View and ViewGroup
- 19. Cách thêm dữ liệu có cấu trúc vào liên hệ mới Intent
- 20. Cách mở tệp trong Android qua Intent
- 21. Lọc mối quan hệ Nhiều-Nhiều từ trường Mối quan hệ ở Django
- 22. Chủ sở hữu mối quan hệ nghĩa là gì trong mối quan hệ hai chiều?
- 23. cách tránh trùng lặp trong mối quan hệ has_many: thông qua mối quan hệ?
- 24. Tham chiếu tuần hoàn trong mối quan hệ nhiều chiều đến nhiều mối quan hệ
- 25. Mối quan hệ giữa nhiều mối quan hệ giữa nhiều mô hình
- 26. Làm thế nào để có mối quan hệ với một mối quan hệ luôn được nhúng
- 27. Tìm hiểu các mối quan hệ và mối quan hệ dữ liệu của Orchard
- 28. Quan hệ ngoại giao như mối quan hệ ở Mongo DB
- 29. Nhiều mối quan hệ với dữ liệu bổ sung về mối quan hệ
- 30. Sự khác biệt giữa Cơ sở dữ liệu Quan hệ và Không Quan hệ là gì?
Xin lỗi nhưng điều này là sai, hãy kiểm tra câu trả lời của tôi để biết lý do. – Reno
'mExtras = new Bundle();' điều này có đủ thuyết phục không? Nếu không tự mình kiểm tra mã nguồn của 'Intent.java'. – Reno