BUNDLE TRONG ANDROID LÀ GÌ

Loại Dữ Liệu Được Sử Dụng Trong IntentDùng ExtraDùng BundleThực Hành Gửi Dữ Liệu Từ MainActivity Qua ContactActivity

Chào mừng chúng ta đang đi đến với bài học Android thiết bị 29, bài học kinh nghiệm về làm giải pháp nào truyền dữ liệu hỗ tương giữa những Activity. Đây là bài học trong chuỗi nội dung bài viết về thiết kế vận dụng Android bằng Java của Yellow Code Books.

Bạn đang xem: Bundle trong android là gì

Cho mang đến bài học từ bây giờ, chắc hẳn các bạn đã siêu tự tin với vấn đề thao tác làm việc cùng với Activity rồi. Tuy nhiên Activity vẫn còn đó những điều tuyệt ho khác mà các bạn vẫn cần hiểu rõ. giữa những điều đó đó là câu hỏi làm cho ráng như thế nào mà lại các Activity hoàn toàn có thể “nói chuyện” được cùng nhau, tốt nói theo một cách khác là truyền dữ liệu mang lại nhau.

Nếu các bạn là người bắt đầu tiếp cận Android, tức thì từ bây giờ phía trên, có thể bạn vẫn chưa thấy hết nhu yếu từ các việc truyền dữ liệu tương hỗ thân các Activity. Nhưng tin mình đi, mình với rất nhiều các bạn gồm kinh nghiệm khác đông đảo đang gặp gỡ nên yêu cầu này hơi sớm. Ngay cả Tourcảnh báo cũng cần phải xây đắp tác dụng truyền tài liệu tương hỗ giữa hai Activity rồi đó. Nếu thấy độc đáo thì mời các bạn thuộc xem tiếp bài học nhé.

Tại Sao Phải Truyền Dữ Liệu Qua Lại Giữa Các Activity?

Quý khách hàng đã và đang biết, từng Activity chính là một screen của áp dụng (cho đến bài học kinh nghiệm bây giờ thì đúng là vậy). Và bạn cũng đã thấy mỗi Activity là một trong đơn vị chức năng tự do, ví dụ điển hình từng bọn chúng đều phải có mộtvòng đời khác nhau. Bởi vậy sẽ rất nặng nề nếu như nlỗi chúng không có một vẻ ngoài như thế nào đó truyền đạt dữ liệu qua cho nhau.

Mình đưa sử nhiều người đang thi công vận dụng email. Trong áp dụng của người sử dụng có một Activity hiển thị list bắt tắt các email cho, giả sử Activity này có tên là ListActivity. Và một Activity hiển thị ngôn từ cụ thể của từng email, mang sử tên của nó là DetailActivity. Ban đầu Khi mlàm việc ứng dụng, người tiêu dùng sẽ thấy được ListActivity trước, khi chúng ta dìm vào trong 1 tin nhắn vào list các email ở Activity này, áp dụng vẫn kích hoạt DetailActivity, với truyền thông tin của thắng lợi nhưng người tiêu dùng đang dấn nhằm DetailActivity hiển thị câu chữ gmail khớp ứng. Tiếp theo trường hợp người dùng đọc ngừng gmail đó sống DetailActivity cơ mà không thấy gmail đặc biệt quan trọng, họ có thể nhấn nút xóa tin nhắn, trong lúc này vận dụng vẫn quay lại ListActivity, với gồm ban bố trả về trường đoản cú DetailActivity cho biết thêm tin nhắn đã trở nên xóa, ListActivity sẽ xóa thành tích tương xứng với lên tiếng trả về kia.

quý khách thấy dó, một ví dụ nhỏ tuổi thôi mà có rất nhiều nguyên do để truyền tài liệu hỗ tương giữa các Activity rồi. Và thực tiễn kinh nghiệm của mình thấy rằng phần lớn các Activity vào vận dụng số đông bắt buộc kỹ năng và kiến thức của bài bác từ bây giờ cả.

Vậy họ cùng xem cụ thể phương pháp để truyền tài liệu qua lại thân những Activity như thế nào nhé.

Cách Truyền Dữ Liệu Qua Lại Giữa Các Activity

Nếu bạn đã thử knhì báo các ở trong tính static vào áp dụng để lưu trữ các dữ liệu mà lại tất cả các Activity rất có thể phát âm được cùng chỉnh sửa được. Và chúng ta nhận định rằng trực thuộc tính static này là biện pháp hiệp thương tài liệu thân các Activity, thì các bạn vẫn không nên rồi. Các ở trong tính static trong ứng dụng chỉ nên là các hằng số, hoặc những quý hiếm cần sử dụng phổ biến khác nlỗi những link ví dụ bản thân để tại chỗ này cho bạn xem. Nếu các bạn knhị báo một thuộc tính static, và set quý hiếm mang đến nó, rồi bạn kích hoạt một Activity không giống tất cả thực hiện dữ liệu ngơi nghỉ thuộc tính static này, sẽ không có thể tài liệu đó đúng như bạn mong muốn đâu. Một đợt tiếp nhữa, đừng sử dụng ở trong tính static nhằm share tài liệu giữa các Activity nhé.

Chúng ta chỉ gồm duy nhất một cách để truyền dữ liệu qua lại giữa những Activity. Đó là giải pháp “nhét” dữ liệu vào Intent cùng dựa vào yếu tố này gửi giúp. Hệ thống vẫn bảo vệ dữ liệu được gửi vào “ngulặng vẹn”cùng kịp lúc sống Activity mới.

Ồ, vậy Intent không tính vấn đề kích hoạt các yếu tố của Android, trong số đó có Activity như các bạn sẽ biết, ni lại sở hữu công suất của “tín đồ vận chuyển” nữa.

Loại Dữ Liệu Được Sử Dụng Trong Intent

Tại mục bên trên chúng ta đã hiểu được, Intent bao gồm tính năng vận tải dữ liệu qua những Activity. Vậy dữ liệu sẽ tiến hành tổ chức bên trong Intent như vậy nào?

Dữ liệu được “nhét” vào trong Intent cùng được lấy ra khỏi Intent theo các cặp tài liệu dạng key/value. Key sinh sống đấy là một chuỗi, giúp định danh đến tài liệu value. Nếu chúng ta để vào trong Intent cặp key/value làm sao, thì bạn phải lôi ra vày cặp key/value đó, đề nghị đảm bảo knhì báo đúng key với lấy ra đúng dạng hình dữ liệu của value lúc đặt vào. Như vậy tựa như nhỏng khi chúng ta dịch chuyển đi dạo xa, thì Lúc đóng gói tư trang hành lý của người sử dụng, nhân viên đón nhận hành lý nên dán nhãn tên của doanh nghiệp giỏi ID của công ty lên tư trang hành lý, để đảm bảo an toàn bạn mang đúng hành lý (chính là value) lúc tới chỗ dựa vào nhãn thương hiệu xuất xắc ID kia (đó là key).

Tuy có một giải pháp thôi, nhưng mà bạn có thể sử dụng 1 trong nhì vẻ ngoài sau. Một là thực hiện Extra, hoặc áp dụng Bundle. Sự khác biệt thân hai giải pháp này theo mình là ko đặc biệt quan trọng, các bạn nên biết cả nhì biện pháp, cùng sẽ sở hữu được lời khuyên ổn của chính bản thân mình yêu cầu áp dụng biện pháp làm sao sinh sống dưới.

Dùng Extra

Có thể nói, truyền dấn tài liệu bằng Extra là cách dễ nhất.

Gửi Dữ Liệu

trước hết, nhằm gửi tài liệu bằng Extra. Sau Khi knhị báo Intent và trước khi bạn sử dụng nó để kích hoạt activity như thế nào đó, chúng ta có thể thực hiện các phương thức được nạp chồngcủa chính nó để gửi dữ liệu. Các cách làm kia tất cả phổ biến một thương hiệu là putExtra().


Các cách tiến hành giúp đặt tài liệu vào Extra

quý khách hàng đừng quên các cách thức putExtra() này không có s đằng sau Extra nhé. Extra tất cả s đang dành riêng cho mục Bundle tiếp sau đây.

Với từng putExtra() điều này, tmê say số trước tiên chính là key mà lại mình gồm nói bên trên kia. Tsay mê số sản phẩm hai giống như chính là value. Phương thức này được hấp thụ chồng làm những phiên bản nhằm các bạn dễ ợt thực hiện từng loại value mà lại bạn muốn. Tuy nhiên bạn chớ xem xét nhị vẻ bên ngoài valueParcelable cùng Serializable, hai phong cách này khá tinh vi một chút ít, chúng ta sẽ sở hữu một nội dung bài viết riêng rẽ về hai dạng hình này Khi phù hợp.

Đoạn code sau ví dụ phương pháp để đặt dữ liệu vào Intent bằng Extra.

Xem thêm: Phân Biệt Bột Matcha Và Bột Trà Xanh, Cách Dùng Và Công Dụng Mỗi Loại


Intent intent = new Intent(this, ContactActivity.class);intent.putExtra("Key_1", "Truyền một String"); // Truyền một Stringintent.putExtra("Key_2", 5); // Truyền một Intintent.putExtra("Key_3", true); // Truyền một BooleanstartActivity(intent);

Nhận Dữ Liệu

lúc này, theo như ví dụ bên trên thìContactActivitysẽ tiến hành kích hoạt với dữ liệu là ba cặp key/value được truyền qua. Ở cách tiến hành onCreate() hoặc bất cứ chỗ nào của ContactActivity, chúng ta rất nhiều hoàn toàn có thể đem bất kể cặp key/value làm sao ra sử dụng. Bằng giải pháp Gọi cho getXxxExtra().


Các cách làm giúp mang tài liệu ngoài Extra

Mình ghi bình thường là Xxx, bởi Xxx này sẽ tiến hành bạn thay thế sửa chữa bằng hình dáng tài liệu phù hợp với key bên “đóng gói”, như getBooleanExtra(), getStringExtra(), getIntExtra(),… Dĩ nhiên tsay đắm số name truyền vào thủ tục này nên chính xác là key mặt đóng gói luôn luôn.

Một số thủ tục rất cần được gồm tđắm đuối số đồ vật hai, tmê say số này đó là tài liệu mặc định ví như nhỏng khối hệ thống không kiếm thấy tài liệu với key nhưng bạn cung cấp. Việc cung ứng tham số đồ vật hai này rời một vài lỗi xẩy ra so với công tác của họ.

Đoạn code sau minh họa bí quyết mang tài liệu thoát ra khỏi Intent bởi ExtraonCreate()của Activity. Quý khách hàng hoàn toàn có thể thấy từng cặp key/value khớp cùng với khi bạn đặt tài liệu vào bên trên kia.


Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); // Các chiếc code không giống... Intent intent = getIntent(); String value1 = intent.getStringExtra("Key_1"); int value2 = intent.getIntExtra("Key_2", 0); boolean value3 = intent.getBooleanExtra("Key_3", false);

Dùng Bundle

Thực ra Bundle cùng Extra không khác gì nhau hết. Nếu nlỗi Extra trên cơ vẫn “xé lẻ” dữ liệu ra và gởi theo từng chiếc. Thì Bundle để giúp đỡ bạn “đóng góp gói” dữ liệu lại và gởi nguim kiện. Tất nhiên Bundle đã tiện thể hơn vào trường phù hợp bạn muốn gởi cùng một bộ dữ liệu đến các Activity không giống nhau.

Ngoài nhiệm vụ đóng gói dữ liệu để truyền tương hỗ giữa những Activity nghỉ ngơi bài học này, thì Bundle còn sử dụng vào một số mục tiêu không giống, 1-1 cử như truyền tài liệu qua Fragment nhưng mà các bạn sẽ biết đến sinh sống bài bác sau. Nên tốt rộng không còn chúng ta nên học phương pháp thực hiện Bundle tức thì tự bài này nhé.

Gửi Dữ Liệu

Chỉ có phát sinh vài dòng code so với Extra trên tê thôi, đầu tiênlà dòng tạo ra Bundle. Sau đó vẫn là các chiếc đặt tài liệu vào Bundle, các loại này có hơi không giống cùng với các loại đặt tài liệu vào Extra một chút, nếu như với Extra các bạn cần sử dụng các cách tiến hành nạp chồng với một tên putExtra()thì cùng với Bundle chúng ta buộc phải dùng đúng cách tiến hành putXxx() cùng với Xxx là đẳng cấp dữ liệu bạn phải sử dụng.


Các phương thức góp đặt dữ liệu vào Bundle

lúc Bundle đang cất đủ dữ liệu, bạn phải đặt Bundle này vào trong Intent bởi một dòng code putExtras() (nhớ là cós nhé). Quý khách hàng coi code nlỗi sau.


Intent intent = new Intent(this, ContactActivity.class);Bundle bundle = new Bundle();bundle.putString("Key_1", "Truyền một String"); // Truyền một Stringbundle.putInt("Key_2", 5); // Truyền một Intbundle.putBoolean("Key_3", true); // Truyền một Booleanintent.putExtras(bundle);startActivity(intent);

Nhận Dữ Liệu

Cũng giống như nhỏng bên gửi thôi, trường hợp đang gửi theo Bundle, thì bên thừa nhận cũng sẽ nên dìm theo Bundle trước rồi new đem từng tài liệu ra cần sử dụng. Để rước Bundle ra khỏi Intent thì họ có phương thức getExtras().

Sau Khi lấy Bundle thoát khỏi Intent, câu hỏi tiếp sau vẫn Call cho các phương thức getXxx()của chính nó. Các thủ tục này của Bundle cũng như những phương thức getXxxExtra()của Extra trên cơ. Chỉ khác một khu vực getXxx() của Bundle thông thường có nhì thủ tục hấp thụ ông chồng, giúp cho bạn linh động hơn. Thông thường các bạn nên sử dụng getXxx() với nhị tham mê số, những điều đó bạn có thể có mang giá tốt trị khoác định mang lại từng phương thức Khi mà nó không tìm thấy dữ liệu từ key nhưng các bạn hỗ trợ, góp rời một số trong những lỗi ko cần thiết.

Các cách làm giúp mang tài liệu khỏi Bundle

Để chắc chắn rằng thì khi nhấn tài liệu vớiBundle, bạn nên soát sổ coi Bundleđó bao gồm lâu dài hay không (soát sổ khác null) trước nhé.


Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); // Các mẫu code khác... Intent intent = getIntent(); Bundle bundle = intent.getExtras(); if (bundle != null) String value1 = bundle.getString("Key_1", ""); int value2 = bundle.getInt("Key_2", 0); boolean value3 = bundle.getBoolean("Key_3", false);
Bạn vừa xem qua cách thức chuyển tài liệu tương hỗ thân những Activity. Giờ là thời gian bọn họ thực hành tạo ra một ít đến Tourlưu ý rồi.

Thực Hành Gửi Dữ Liệu Từ MainActivity Qua ContactActivity

mục thực hành thực tế của bài bác 26họ vẫn xây đắp sự khiếu nại nhận mang lại hai thực đơn thắng lợi trênActionBarcủaMainActivity, thế nào cho Khi người tiêu dùng nhận vàoAbout ApphayHelpcũng trở thành mở raContactActvititycả. Như hình sau đây.


*
Hình ảnh TourNote sau khoản thời gian thực hành
Download Source Code Mẫu

quý khách rất có thể download source code mẫu mã của bài này ở đây.

Chúng ta vừa hiểu thêm kiến thức thú vui nữa về Activity trong Android. Dĩ nhiên vẫn còn những kiến thức khác mà lại bạn cũng sẽ thấy yêu thích. Hãy liên tiếp theo dõi những bài học của bản thân nhé.


Cảm ơn chúng ta đang hiểu những bài viết của Yellow Code Books. quý khách hãy ủng hộ blog bởi cách:

Đánh giá5 sao sinh sống từng bài bác giả dụ thấy yêu thích.– Comment dưới mỗi bài bác trường hợp tất cả thắc mắc.– Để lại tương tác tin nhắn của chúng ta sinh hoạt tkhô cứng bên phải nhằm cảm nhận thông báo sớm nhất có thể Khi bao gồm nội dung bài viết mới.– Chia sẻ các nội dung bài viết của Yellow Code Books đến không ít người không giống.


Bài Kế Tiếp

Chúng ta vẫn kể đến việc một màn hình hoàn toàn có thể năng động hiển thị những nhân tố con theo từng ngữ cảnh, bởi bài toán tìm hiểu kiến thức và kỹ năng về Fragment.