Giới thiệu
Bài viết này minh họa cách truyền dữ liệu từ Activity thứ hai trở về Main Activity bằng startActivityForResult() và onActivityResult().
Các bước thực hiện
Bước 1: Tạo dự án mới
Mở Android Studio, chọn File → New Project và điền đầy đủ thông tin để tạo dự án mới.
Bước 2: Thiết kế MainActivity (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:orientation="vertical"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editTextNumber1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Số 1"
android:inputType="number" />
<EditText
android:id="@+id/editTextNumber2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Số 2"
android:inputType="number" />
<TextView
android:id="@+id/textViewResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Kết quả"
android:textSize="30sp" />
<Button
android:id="@+id/btnOpenActivity2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mở Activity 2" />
</LinearLayout>
Bước 3: Viết code MainActivity (src/MainActivity.java)
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private TextView textViewResult;
private EditText editTextNumber1;
private EditText editTextNumber2;
Button btnOpen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewResult = findViewById(R.id.textViewResult);
editTextNumber1 = findViewById(R.id.editTextNumber1);
editTextNumber2 = findViewById(R.id.editTextNumber2);
btnOpen = findViewById(R.id.btnOpenActivity2);
btnOpen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (editTextNumber1.getText().toString().equals("") || editTextNumber2.getText().toString().equals("")) {
Toast.makeText(MainActivity.this, "Vui lòng nhập số", Toast.LENGTH_SHORT).show();
} else {
int number1 = Integer.parseInt(editTextNumber1.getText().toString());
int number2 = Integer.parseInt(editTextNumber2.getText().toString());
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("number1", number1);
intent.putExtra("number2", number2);
startActivityForResult(intent, 1);
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
int result = data.getIntExtra("result", 0);
textViewResult.setText("" + result);
}
if (resultCode == RESULT_CANCELED) {
textViewResult.setText("Không có lựa chọn");
}
}
}
}
Bước 4: Tạo Activity thứ hai
Giao diện (activity_second.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:orientation="vertical"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textViewNumbers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Các số: "
android:textSize="30sp" />
<Button
android:id="@+id/buttonAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="cộng" />
<Button
android:id="@+id/buttonSubtract"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="trừ" />
</LinearLayout>
Code (SecondActivity.java)
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
TextView textViewNumber;
Button buttonAdd, buttonSubtract;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
final int number1 = intent.getIntExtra("number1", 0);
final int number2 = intent.getIntExtra("number2", 0);
textViewNumber = findViewById(R.id.textViewNumbers);
textViewNumber.setText("Các số: " + number1 + ", " + number2);
buttonAdd = findViewById(R.id.buttonAdd);
buttonSubtract = findViewById(R.id.buttonSubtract);
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int result = number1 + number2;
Intent resultIntent = new Intent();
resultIntent.putExtra("result", result);
setResult(RESULT_OK, resultIntent);
finish();
}
});
buttonSubtract.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int result = number1 - number2;
Intent resultIntent = new Intent();
resultIntent.putExtra("result", result);
setResult(RESULT_OK, resultIntent);
finish();
}
});
}
}
Bước 5: Cấu hình Manifest (androidManifest.xml)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".SecondActivity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Chạy ứng dụng
Kết nối thiết bị Android thực với máy tính. Trong Android Studio, mở file activity và nhấn biểu tượng Run trên thanh công cụ. Chọn thiết bị di động của bạn và kiểm tra màn hình hiển thị.


