এই টিউটোরিয়ালে আমরা শিখব কীভাবে getResources().getIdentifier() মেথড ব্যবহার করে ড্রয়েবল রিসোর্সের নাম থেকে তার ID প্রোগ্রাম্যাটিক্যালি পেতে হয়।
প্রয়োজনীয় ধাপগুলো
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।
ধাপ ২: লেআউট ফাইল তৈরি করুন
res/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:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:id="@+id/ivLauncer"
android:layout_width="match_parent"
android:layout_height="450dp"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_launcher_background" />
<TextView
android:id="@+id/tvResourceId"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
ধাপ ৩: মেইন এক্টিভিটিতে রিসোর্স ID পান
src/MainActivity.java ফাইলে নিচের কোড যোগ করুন:
package app.tutorialspoint.com.sample;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String drawableName = "ic_launcher_background";
int resId = getResources().getIdentifier(drawableName, "drawable", getPackageName());
TextView tvResourceId = findViewById(R.id.tvResourceId);
tvResourceId.setText(String.valueOf(resId));
Log.d("ResourceID", "Drawable ID: " + resId);
}
}
ধাপ ৪: ম্যানিফেস্ট কনফিগার করুন
AndroidManifest.xml ফাইল:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.tutorialspoint.com.sample">
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
getIdentifier() প্যারামিটার ব্যাখ্যা
int getIdentifier(String name, String defType, String defPackage)
- name - রিসোর্সের নাম (এক্সটেনশন ছাড়া, যেমন "ic_launcher_background")
- defType - রিসোর্স টাইপ: "drawable", "string", "layout", "id", "color", "dimen", "raw", "anim" ইত্যাদি
- defPackage - প্যাকেজ নাম (সাধারণত
getPackageName())
বিবিধ রিসোর্স টাইপের উদাহরণ
// String রিসোর্স
int stringId = getResources().getIdentifier("app_name", "string", getPackageName());
// Layout রিসোর্স
int layoutId = getResources().getIdentifier("activity_main", "layout", getPackageName());
// Color রিসোর্স
int colorId = getResources().getIdentifier("colorPrimary", "color", getPackageName());
// ID রিসোর্স (XML-এ android:id="@+id/my_view" এর জন্য)
int viewId = getResources().getIdentifier("my_view", "id", getPackageName());
পারফরম্যান্স সতর্কতা
getIdentifier() রিফ্লেকশন ব্যবহার করে বলে এটি ডায়রেক্ট রিসোর্স রেফারেন্স (R.drawable.xxx) চেয়ে ধীর। লুপ বা ঘন ঘন কল এড়িয়ে ক্যাশ করে রাখা উচিত।
রিসোর্স পাওয়া না গেলে
রিসোর্স পাওয়া না গেলে এটি 0 রিটার্ন করে। সবসময় চেক করুন:
if (resId != 0) {
// রিসোর্স পাওয়া গেছে
} else {
// রিসোর্স পাওয়া যায়নি
}