Intent trong Android là hầu như object lời nhắn không đồng hóa cơ mà chúng ta cũng có thể thực hiện để đề nghị hành vi tự những thành phần Android khác. Dường như nó chất nhận được bạn can hệ với những nguyên tố từ bỏ những ứng dụng giống như cũng tương tự với những nguyên tố do những áp dụng khác góp phần. Ví dụ: một Activity rất có thể ban đầu một Activity bên ngoài để chụp ảnh


*
*
*
*
*
*
*
Các cách thức giúp đem dữ liệu khỏi Extra
xxx tại đây thì chúng ta thay thế bằng giao diện dữ liệu cân xứng cùng với key bên “đóng gói”, ví như getBooleanExtra(), getStringExtra(), getIntExtra(),… Dĩ nhiên tmê man số name được truyền vào phương thức này đề xuất chính xác là key bên “đóng gói” luôn luôn.

Bạn đang xem: Intent trong android: vai trò và cách sử dụng

Có một số trong những cách thức rất cần phải tất cả tsay mê số sản phẩm công nghệ nhì, tđắm đuối số kia chính là dữ liệu khoác định giả dụ nlỗi khối hệ thống không tìm kiếm thấy tài liệu cùng với key mà lại bạn vẫn hỗ trợ. Việc cung cấp tmê man số thứ hai này để rời một số trong những lỗi có thể xẩy ra đối với lịch trình của họ.

Đoạn code sau sẽ mô phỏng biện pháp lấy dữ liệu thoát ra khỏi Intent bằng Extra ngơi nghỉ onCreate() của Activity. quý khách hàng hoàn toàn có thể thấy từng cặp key/value khớp với khi chúng ta đặt dữ liệu vào bên trên kia.


Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); Intent intent = getIntent(); String value1 = intent.getStringExtra("Key_1"); int value2 = intent.getIntExtra("Key_2", 0); boolean value3 = intent.getBooleanExtra("Key_3", false);

Trường hợp dùng Bundle

Như mình nói từ trên đầu, Bundle và Extra không không giống gì nhau không còn. Nếu như Extra bên trên cơ sẽ “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” tài liệu lại với gửi nguyên kiện. Tất nhiên Bundle đã luôn thể hơn vào ngôi trường thích hợp bạn muốn gửi cùng một cỗ tài liệu cho những Activity không giống nhau.

Ngoài trách nhiệm “đóng gói” tài liệu nhằm truyền qua lại giữa những Activity, thì Bundle còn được sử dụng trong một vài trường đúng theo khác, ví như truyền dữ liệu qua Fragment mà lại các bạn sẽ được hiểu ở một bài như thế nào kia sau này 😂. Nên giỏi rộng không còn là bạn hãy học phương pháp áp dụng Bundle tức thì tự bài này nhé.

Gửi Dữ Liệu

Chỉ tất cả tạo nên vài ba loại code so với Extra bên trên tê thôi, đầu tiên được coi là dòng tạo thành ra Bundle. Sau đó vẫn là những loại đặt dữ liệu vào Bundle, những mẫu này còn có tương đối không giống cùng với những cái đặt tài liệu vào Extra một chút ít, nếu với Extra bạn sử dụng những cách làm hấp thụ ck với cùng 1 tên putExtra() thì với Bundle bạn nên cần sử dụng đúng pmùi hương thức putxxx() cùng với xxx là kiểu tài liệu bạn cần dùng.


Khi Bundle vẫn cất đủ tài liệu, bạn phải đặt Bundle này vào trong Intent bằng một loại code putExtras() (và hãy nhờ rằng bao gồm s nha).

Bạn xem code nlỗi sau:


Intent intent = new Intent(this, ContactActivity.class);Bundle bundle = new Bundle();bundle.putString("Key_1", "Truyền một String");bundle.putInt("Key_2", 5);bundle.putBoolean("Key_3", true);intent.putExtras(bundle);startActivity(intent);
Nhận Dữ LiệuCũng tương tự nlỗi bước gửi thôi, giả dụ đang gửi theo kiểu Bundle, thì mặt nhấn cũng biến thành phải nhận theo Bundle trước rồi bắt đầu mang từng tài liệu ra dùng. Để đem Bundle thoát khỏi Intent thì chúng ta tất cả cách làm getExtras().

Sau Khi lấy Bundle ra khỏi Intent, câu hỏi tiếp theo sau đang gọi cho những phương thơm thức getxxx() của chính nó. Các cách tiến hành này của Bundle cũng tương tự những cách thức getxxxExtra() của Extra ở trên. Chỉ khác một vị trí getxxx() của Bundle thường có nhì phương thức nạp ông chồng, giúp đỡ bạn linh hoạt rộng. Thông thường chúng ta đề nghị sử dụng getxxx() cùng với hai tđam mê số, điều đó bạn cũng có thể khái niệm được giá trị khoác định cho từng phương thức Lúc mà nó không tìm được tài liệu trường đoản cú key mà lại chúng ta hỗ trợ, góp tách một vài lỗi không cần thiết.

Xem thêm: Dceu Là Gì - Những Lý Do Khiến Khác Với Dceu Hiện Tại

Các cách tiến hành góp đem dữ liệu khỏi BundleĐể chắc chắn là thì Khi dìm tài liệu với Bundle, bạn nên kiểm tra xem Bundle đó tất cả trường tồn hay là không (đánh giá khác null) trước nhé.


Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); 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); Quý Khách vừa nhìn qua phương pháp đưa tài liệu qua lại giữa các Activity. Giờ là thời điểm bọn họ thực hành thực tế thiết kế một ít mang lại Tourlưu ý rồi.

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

Thực ra ContactActivity cơ mà mình thích hướng đến sẽ chứa hai nhiều loại câu chữ. Một là công bố về ứng dụng, nhì là biết tin hỗ trợ. Việc rành mạch ngôn từ như thế nào được hiển thị đã nhờ vào chọn lựa của người dùng trên menu sản phẩm của MainActivity. Chính vị vậy họ sẽ xây dựng dựng ContactActivity làm sao để cho rất có thể nhận ra tài liệu từ MainActivity chuyển sang, tài liệu này chỉ đơn giản dễ dàng báo cho ContactActivity biết người tiêu dùng vừa thừa nhận chọn About App hay Help.

Quý Khách đang đọc đề xuất của bài xích thực hành từ bây giờ rồi đúng không như thế nào. Nên nhớ rằng họ chỉ kể đến cách thức gửi thừa nhận dữ liệu để ContactActivity gọi được chuyện gì đang xẩy ra thôi nhé, vì thế bài xích này bọn họ chỉ sử dụng Toast để kiểm hội chứng dữ liệu nhấn. Còn vấn đề hiển thị vật gì Khi đã nhận được dữ liệu thì sinh hoạt bài sau bọn họ sẽ xây dựng tiếp.

Xây Dựng Các Giá Trị Hằng Số

quý khách hàng đang biết bài toán sử dụng Extra hay Bundle là bài toán tàng trữ những dữ liệu dạng key/value rồi gửi đi và thừa nhận chúng sinh hoạt nơi không giống đúng không nhỉ như thế nào. Vậy để bảo đảm an toàn các key luôn luôn được dùng đúng, bọn họ nên quan niệm nó là 1 giá trị tĩnh (static) và hằng (final). Giá trị này nên tư tưởng mặt lớp nhấn tài liệu thì tốt rộng về mặt làm chủ code (chủ động thôi nhé, chúng ta có thể có mang một lớp chuyên đựng những giá trị key này). Do đó bản thân thêm những thuộc tính được tô sáng sau vào ContactActivity.


public class ContactActivity extends AppCompatActivity public static final String KEY_SHOW_WHAT = "show_what"; public static final String VALUE_SHOW_ABOUT = "show_about"; public static final String VALUE_SHOW_HELP. = "show_help";
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true);
Override public boolean onOptionsItemSelected(MenuItem item) switch (thành quả.getItemId()) case game android.R.id.home: finish(); return true; return super.onOptionsItemSelected(item);

Gửi Dữ Liệu Từ MainActivity

Dĩ nhiên bên MainActivity, họ sửa đổi một tí nơi kích hoạt ContactActivity, sao cho Intent hoàn toàn có thể chứa Bundle cơ mà họ mong muốn nlỗi sau.


Overridepublic boolean onOptionsItemSelected(MenuItem item) if(drawerToggle.onOptionsItemSelected(item)) return true; switch (công trình.getItemId()) case R.id.search: Toast.makeText(this, "Search button selected", Toast.LENGTH_SHORT).show(); return true; case R.id.about: Intent intent = new Intent(this, ContactActivity.class); Bundle bundle = new Bundle(); bundle.putString(ContactActivity.KEY_SHOW_WHAT, ContactActivity.VALUE_SHOW_ABOUT); intent.putExtras(bundle); startActivity(intent); return true; case R.id.help: intent = new Intent(this, ContactActivity.class); bundle = new Bundle(); bundle.putString(ContactActivity.KEY_SHOW_WHAT, ContactActivity.VALUE_SHOW_HELP); intent.putExtras(bundle); startActivity(intent); return true; return super.onOptionsItemSelected(item);

Nhận Dữ Liệu Ở ContactActivity

Như bản thân có nói, ContactActivity chỉ dìm tài liệu rồi dùng Toast để show ra làm dẫn chứng là nó đã nhận được đúng tài liệu. Còn vấn đề hiển thị cái gì thì bài học sau họ sẽ nói tiếp nhé. bởi vậy code của ContactActivitgiống hệt như sau.

public class ContactActivity extends AppCompatActivity public static final String KEY_SHOW_WHAT = "show_what"; public static final String VALUE_SHOW_ABOUT = "show_about"; public static final String VALUE_SHOW_HELPhường = "show_help";
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_contact); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); Intent intent = getIntent(); Bundle bundle = intent.getExtras(); if (bundle != null) String valueShow = bundle.getString(KEY_SHOW_WHAT, ""); Toast.makeText(this, "Show value: " + valueShow, Toast.LENGTH_SHORT).show();
Override public boolean onOptionsItemSelected(MenuItem item) switch (tác phẩm.getItemId()) case android.R.id.home: finish(); return true; return super.onOptionsItemSelected(item);
Kết quả là, tùy từng giải pháp người dùng lựa chọn vào menu thành công mà ContactActivity đã hiển thị Toast như sau.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *