Giới thiệu
Lấy tên class của Activity hiện tại bằng getLocalClassName() hoặc getClass().getSimpleName(). Hữu ích cho debugging, logging, analytics, điều hướng động.
Triển khai
Bước 1: Tạo dự án
Android Studio → New Project → Empty Activity.
Bước 2: 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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_activity_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:lineSpacingExtra="4dp"
tools:text="Activity info" />
</LinearLayout>
Bước 3: MainActivity.java
package com.example.myapplication;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView tvActivityName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvActivityName = findViewById(R.id.tv_activity_name);
// Cách 1: getLocalClassName() - trả về tên class ngắn (không có package)
String localName = getLocalClassName(); // "MainActivity"
// Cách 2: getClass().getSimpleName() - tương tự
String simpleName = getClass().getSimpleName(); // "MainActivity"
// Cách 3: getClass().getName() - full qualified name
String fullName = getClass().getName(); // "com.example.myapplication.MainActivity"
// Cách 4: ComponentName từ Intent
String classNameFromIntent = getComponentName() != null
? getComponentName().getClassName() : "null";
String info = "getLocalClassName(): " + localName +
"\ngetSimpleName(): " + simpleName +
"\ngetName(): " + fullName +
"\nComponentName: " + classNameFromIntent +
"\n\nTask ID: " + getTaskId();
tvActivityName.setText(info);
}
}
So sánh các phương thức
| Phương thức | Trả về | Ví dụ | Lưu ý |
|---|---|---|---|
| getLocalClassName() | String | MainActivity | Chỉ tên class, không package. Từ API 1 |
| getClass().getSimpleName() | String | MainActivity | Java standard, hoạt động mọi class |
| getClass().getName() | String | com.example.MainActivity | Full qualified name |
| getComponentName().getClassName() | String | com.example.MainActivity | Từ Intent, có thể null |
| getTaskId() | int | 12345 | ID task chứa activity |
Ứng dụng thực tế
- Logging:
Log.d(getLocalClassName(), "message") - Analytics: Ghi tên screen tự động
- Navigation: Kiểm tra activity hiện tại trước khi navigate
- Debug: Xác định activity nào đang hiển thị
Kotlin Extension
// Extension property
val Activity.currentActivityName: String
get() = this.localClassName // hoặc this::class.java.simpleName
// Sử dụng
Log.d(currentActivityName, "User clicked button")
Mẹo: DùnggetLocalClassName()cho logging tag ngắn gọn. DùnggetComponentName().flattenToString()để lấy string đầy đủ package/class cho intent.