Giới thiệu
Bài viết hướng dẫn các cách lấy tên class của Activity hiện tại: tên đơn giản (Simple name) hoặc tên đầy đủ (Fully qualified name).
Các phương pháp
Phương pháp 1: getClass().getSimpleName() - Khuyên dùng
val simpleName = this::class.java.simpleName // Kết quả: "MainActivity"
Phương pháp 2: getClass().getName() - Tên đầy đủ
val fullName = this::class.java.name // Kết quả: "com.example.myapp.MainActivity"
Phương pháp 3: Java style
// Java String simpleName = getClass().getSimpleName(); String fullName = getClass().getName();
Phương pháp 4: Từ Context (bất kỳ đâu có Context)
val activityName = context.javaClass.simpleName // Hoặc val activityName = context.localClassName // Chỉ tên class, không package
Ví dụ hoàn chỉnh (MainActivity.kt)
package com.example.getactivityname
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val simpleName = this::class.java.simpleName
val fullName = this::class.java.name
val canonicalName = this::class.java.canonicalName
tvActivityName.text = "Simple: $simpleName\nFull: $fullName\nCanonical: $canonicalName"
Log.d("ActivityName", "Simple: $simpleName, Full: $fullName")
}
}
Giao diện (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="16dp">
<TextView
android:id="@+id/tvActivityName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:lineSpacingExtra="8dp" />
</LinearLayout>
Các trường hợp sử dụng
- Debug/Logging: Tag log tự động:
Log.d(javaClass.simpleName, "message"). - Analytics: Gửi tên screen tự động.
- Navigation: Kiểm tra activity hiện tại trước khi navigate.
- Testing: Verify activity đúng trong Espresso/UIAutomator.
Lưu ý
canonicalNamecó thể null cho anonymous/local class.- Proguard/R8 có thể obfuscate tên class → dùng
@Keephoặc rule keep nếu cần tên gốc. - Trong Fragment, dùng
requireActivity().javaClass.simpleName. - Kotlin:
::class.javatương đương.javaClass.