Quay về Activity trước với finish()
Trong Android, các Activity được quản lý trong Back Stack. Để quay lại Activity trước, chỉ cần gọi finish() trên Activity hiện tại. Hệ thống sẽ destroy Activity hiện tại và resume Activity dưới nó.
Ví dụ 2 Activity
1. MainActivity (Activity đầu)
// res/layout/activity_main.xml
<LinearLayout ... android:background="#33FFFF00" android:gravity="center">
<TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" />
</LinearLayout>
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = findViewById(R.id.text);
tv.setText("Click để mở Activity 2");
tv.setOnClickListener(v -> {
startActivity(new Intent(this, SecondActivity.class));
});
}
}
2. SecondActivity (Activity thứ 2)
// res/layout/activity_second.xml (tương tự)
<TextView android:id="@+id/text" ... />
// SecondActivity.java
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView tv = findViewById(R.id.text);
tv.setText("Click để quay lại Activity 1");
tv.setOnClickListener(v -> {
finish(); // Quan trọng: kết thúc activity này
});
}
}
AndroidManifest.xml
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" />
Luồng hoạt động
- MainActivity start SecondActivity → Stack: [Main, Second]
- SecondActivity gọi finish() → Stack: [Main] (Main resume)
Cách khác
- Nhấn nút Back vật lý/hệ thống (tự động gọi finish).
onBackPressed()(deprecated API 33+, dùng OnBackPressedDispatcher).- Set
android:noHistory="true"trong Manifest cho Activity không muốn quay lại.