Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách in tên Activity hiện tại trên Android

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ứcTrả vềVí dụLưu ý
getLocalClassName()StringMainActivityChỉ tên class, không package. Từ API 1
getClass().getSimpleName()StringMainActivityJava standard, hoạt động mọi class
getClass().getName()Stringcom.example.MainActivityFull qualified name
getComponentName().getClassName()Stringcom.example.MainActivityTừ Intent, có thể null
getTaskId()int12345ID 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ùng getLocalClassName() cho logging tag ngắn gọn. Dùng getComponentName().flattenToString() để lấy string đầy đủ package/class cho intent.