getLocalClassName() এবং getClass().getSimpleName() ব্যবহার করে এক্টিভিটি নাম বের করা
Android-এ বর্তমানে চলমান এক্টিভিটি ক্লাসের নাম জানার জন্য দুটি সাধারণ পদ্ধতি আছে: getLocalClassName() এবং getClass().getSimpleName()।
লেআউট (activity_main.xml)
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:padding="16dp"
android:textAlignment="center" />
</LinearLayout>
MainActivity.java
package com.example.myapplication;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
// পদ্ধতি ১: ComponentName থেকে লোকাল ক্লাস নাম
String localClassName = getLocalClassName(); // "MainActivity"
// পদ্ধতি ২: Java Reflection থেকে সিম্পল নাম
String simpleName = getClass().getSimpleName(); // "MainActivity"
// পদ্ধতি ৩: ফুলি কোয়ালিফাইড ক্লাস নাম
String canonicalName = getClass().getCanonicalName(); // "com.example.myapplication.MainActivity"
// পদ্ধতি ৪: Intent থেকে (যদি লঞ্চার থেকে আসে)
String action = getIntent().getAction(); // "android.intent.action.MAIN"
String category = getIntent().getCategories() != null ? getIntent().getCategories().toString() : "none";
String output = "Method 1 - getLocalClassName():\n" + localClassName +
"\n\nMethod 2 - getClass().getSimpleName():\n" + simpleName +
"\n\nMethod 3 - getClass().getCanonicalName():\n" + canonicalName +
"\n\nIntent Action:\n" + action +
"\n\nIntent Categories:\n" + category;
textView.setText(output);
}
}
পদ্ধতিগুলোর পার্থক্য
| মেথড | রিটার্ন | ব্যবহার |
|---|---|---|
| getLocalClassName() | String | ম্যানিফেস্টে ডিক্লেয়ার্ড এক্টিভিটি নাম (প্যাকেজ ছাড়া) |
| getClass().getSimpleName() | String | Java ক্লাসের সিম্পল নাম (অনোনিমাস ক্লাসের জন্য ভিন্ন হয়তে পারে) |
| getClass().getCanonicalName() | String | ফুল প্যাকেজ + ক্লাস নাম |
| getComponentName().getClassName() | String | ইন্টেন্টে ব্যবহৃত কম্পোনেন্ট নাম |
ব্যবহার কেস
- Analytics/Logging: কোন স্ক্রিনে ইউজার কতক্ষণ আছে ট্র্যাক করতে
- Debugging: ক্র্যাশ রিপোর্টে এক্টিভিটি নাম জানতে
- Navigation: ডাইনামিক নেভিগেশন লজিকে কারেন্ট স্ক্রিন জানতে
- Testing: UI টেস্ট (Espresso) এ করেন্ট এক্টিভিটি ভেরিফাই করতে
Fragment-এ এক্টিভিটি নাম পাওয়া
// Fragment-এ থেকে
String activityName = requireActivity().getLocalClassName();
// অথবা
String activityName = getActivity().getClass().getSimpleName();
