Hotline: 0919 365 363; Email: daotao@r2s.edu.vn

Blog

Intent trong Android

Intent trong Android
Kiến thức hữu ích

Intent trong Android

Trong Android, Intent được sử dụng để mở một Activity khác và truyền dữ liệu cho Activity đó. Khi kết thúc, Activity được gọi có thể gửi dữ liệu trở lại cho Activity ban đầu.

Và để tìm hiểu rõ hơn về yếu tố này, hãy cùng theo dõi bài viết dưới đây của R2S nhé!

Những điều cần biết về Intent trong Android 

Dưới đây là một số thông tin về Intent trong Android mà bạn cần biết:

Mở một Activity không kiểm soát kết quả trả về

Không truyền dữ liệu cho Activity được gọi

Mở một Activity không kiểm soát kết quả trả về
Mở một Activity không kiểm soát kết quả trả về

Truyền dữ liệu cho Activity được gọi

Mở một Activity và xử lý kết quả trả về

Mở một Activity và xử lý kết quả trả về
Mở một Activity và xử lý kết quả trả về

Mở Activity không truyền dữ liệu và không xử lý kết quả trả về Intent trong Android

Thiết kế giao diện ứng dụng

Mở Activity không truyền dữ liệu và không xử lý kết quả trả về
Mở Activity không truyền dữ liệu và không xử lý kết quả trả về

Khi người dùng click vào nút này, ứng dụng sẽ khởi chạy Activity 2 và đóng Activity 1 đang hiển thị.  Tương tự, khi người dùng click vào nút “Quay về Activity 1” tại Activity 2, ứng dụng sẽ chuyển đổi sang Activity 1 và đóng Activity 2.

Viết xử lý:

Viết xử lý cho nút “Mở Activity 2” tại Activity 1 (Phần in đậm là activity được gọi) theo cú pháp sau:

Intent it = new Intent(this , Activity2.class);
startActivity(it);

Viết xử lý cho nút “Quay về Activity 1” tại Activity 2 (Phương thức finish() sẽ đóng activity hiện tại và quay về activity trước)

finish();

Intent trong android – Mở Activity có truyền dữ liệu và không xử lý kết quả trả về

Thiết kế giao diện ứng dụng:

Intent trong android – Mở Activity có truyền dữ liệu và không xử lý kết quả trả về
Intent trong android – Mở Activity có truyền dữ liệu và không xử lý kết quả trả về

Activity_Input có nhiệm vụ tìm số nhỏ nhất trong 2 số và gửi kết quả tìm được cho Activity_Result.

Viết xử lý:

  • Viết xử lý cho nút “Gửi kết quả” tại Activity_Input
Intent it = new Intent(this, Activity_Result.class);//Đóng gói dữ liệu để gửi cho Activity_Result
Bundle bundle = new Bundle();
bundle.putFloat("n1", num1);
bundle.putFloat("n2", num2);
it.putExtra("data", bundle);
//Mở Activity_Result
startActivity(it);

Viết xử lý nhận kết quả tại phương thức onCreate của Activity_Result

Intent it = getIntent();
//Nhận gói dữ liệu từ Activity_Input
Bundle bundle = it.getBundleExtra("data");
//Đọc dữ liệu và gán vào hai biến a và b
float a = bundle.getFloat("n1");
float b = bundle.getFloat("n2");

Mở Activity và xử lý kết quả trả về

Thiết kế giao diện ứng dụng

Mở Activity và xử lý kết quả trả về
Mở Activity và xử lý kết quả trả về

Khi người dùng nhấn vào nút “Nhập tên” trong Activity_ShowName, ứng dụng sẽ mở Activity_InputName. Khi người dùng hoàn tất nhập thông tin và nhấn nút “Hoàn tất”, dữ liệu sẽ được trả về cho Activity_ShowName.

Hãy viết xử lý cho Activity_ShowName

  • Viết xử lý cho nút “Nhập tên” (lưu ý, số 1 là mã yêu cầu – Request Code)
// Mở activity khác tại sự kiện click của nút "Nhập tên"
Intent it = new Intent(this, Activity_InputName.class);
startActivityForResult(it, 1);

  • Thêm phương thức onActivityResult (Phương thức sẽ xử lý kết quả trả về)và viết xử lý (Trong Android Studio, nhấn tổ hợp phím Alt + Insert -> chọn Override Methods -> chọn onActivityResult -> chọn OK để thêm phương thức)
Thao tác trong Android Studio
Thao tác trong Android Studio
  • Và kết quả thu được
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
}

  

  • Code hoàn chỉnh của phương thức onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==1){
        Bundle b = data.getBundleExtra("data");
        //Đọc kết quả trả về và gán vào biến strName
        String strName = b.getString("name");
    }
}

Viết xử lý cho nút “Hoàn tất” tại Activity_InputName như sau:

EditText txt = (EditText)findViewById(R.id.txtName);
// Tham chiếu đến intent
Intent it = getIntent();
// Tạo đối tượng để đóng gói dữ liệu
Bundle b = new Bundle();
b.putString("name", txt.getText().toString());
it.putExtra("data", b);
// Gửi lại kết quả cho Activity_ShowName (1 là Result Code)
setResult(1, it);
// Đóng activity hiện tại
finish();

Intent trong android – Ví dụ mẫu

Ứng dụng được thiết kế với 2 activity. Sau khi khởi động, màn hình đăng ký thông tin sẽ hiển thị cho người dùng nhập tên khách hàng và email. Khi người dùng ấn nút “Gửi”, thông tin này sẽ được chuyển đến màn hình thứ hai.

Intent trong android – Ví dụ mẫu
Intent trong android – Ví dụ mẫu

Hình 1: Màn hình đăng ký thông tin
Hình 1: Màn hình đăng ký thông tin

Hình 2: Màn hình hiển thị thông tin đăng ký

Để tạo hai màn hình, ta cần tạo 2 activity tương ứng. Bằng cách chuột phải vào package, chọn New, sau đó chọn Activity và chọn Empty Activity. Đặt tên cho activity đầu tiên là SignUpActivity và activity thứ hai là WelcomeActivity. Sau đó, tiến hành thiết kế giao diện cho ứng dụng. 

Màn hình đăng ký thông tin có tên SignUpActivity được mô tả trong Hình 1.
Màn hình đăng ký thông tin có tên SignUpActivity được mô tả trong Hình 1.
  • Màn hình hiển thị thông tin WelcomeActivity (Hình 2)
Màn hình đăng ký thông tin có tên SignUpActivity được mô tả trong Hình 1.
Màn hình đăng ký thông tin có tên SignUpActivity được mô tả trong Hình 1.

Viết xử lý

  • Code hoàn chỉnh của SignUpActivity (Lưu ý chỉ định phương thức signUpAction cho thuộc tính onClick ở layout)
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class SignUpActivity extends AppCompatActivity {
    EditText etTenKH;
    EditText etEmail;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_up);
        etTenKH = (EditText) findViewById(R.id.etTenKH);
        etEmail = (EditText) findViewById(R.id.etEmail);
    }
    public void signUpAction(View v) {
        Bundle b = new Bundle();
        b.putString("tenKH", etTenKH.getText().toString());
        b.putString("email", etEmail.getText().toString());
        Intent i = new Intent(this, WelcomeActivity.class);
        i.putExtra("data", b);
        startActivity(i);
    }
}

  

  • Code hoàn chỉnh của WelcomeActivity
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class WelcomeActivity extends AppCompatActivity {
    TextView tvTenKH;
    TextView tvEmail;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);
        tvTenKH = (TextView) findViewById(R.id.tvTenKH);
        tvEmail = (TextView) findViewById(R.id.tvEmail);
        Intent i = getIntent();
        Bundle b = i.getBundleExtra("data");
        String strTenKH = b.getString("tenKH");
        String strEmail = b.getString("email");
        tvTenKH.setText(tvTenKH.getText().toString() + strTenKH);
        tvEmail.setText(tvEmail.getText().toString() + strEmail);
    }
}

Intent trong Android – Bài tập thực hành

Xây dựng một ứng dụng đặt thức ăn và thức uống gồm 3 activity. Giao diện của MainActivity sẽ như sau:

Intent trong Android – Bài tập thực hành
Intent trong Android – Bài tập thực hành
  • FoodActivity:Khi người dùng chạm vào nút “Chọn thức ăn”, FoodActivity sẽ được kích hoạt và hiển thị danh sách 4 món ăn: Phở Hà Nội, Bún Bò Huế, Mì Quảng và Hủ Tíu Sài Gòn để người dùng lựa chọn. Nếu người dùng chọn một món ăn và chạm vào nút “Đặt món”, FoodActivity sẽ đóng lại và gửi tên món ăn đã chọn về MainActivity để cập nhật. 
  • DrinkActivity: Tương tự, khi người dùng chạm vào nút “Chọn đồ uống”, DrinkActivity sẽ hiển thị danh sách 4 thức uống: Pepsi, Heineken, Tiger và Sài Gòn Đỏ để người dùng lựa chọn. Nếu người dùng chọn một thức uống và chạm vào nút “Đặt món”, DrinkActivity sẽ đóng lại và gửi tên thức uống đã chọn về MainActivity để cập nhật.

Kết luận

Như vậy, có thể thấy Intent trong Android có vai trò cực kỳ quan trọng mà người mới học nên biết và sử dụng thành thạo. Chúc bạn trong lập trình Android vui và hữu ích nhé!

Bài viết gốc được đăng tại: giasutinhoc.vn

Alert: You are not allowed to copy content or view source !!