PreferenceScreen-এ কাস্টম বাটন (Preference) যোগ করা
Settings/Preferences স্ক্রিনে একটি ক্লিকযোগ্য বাটন যোগ করে টোস্ট বা অন্য অ্যাকশন ট্রিগার করার পদ্ধতি।
ধাপ ১: প্রজেক্ট তৈরি
Android Studio-তে Settings Activity টেমপ্লেট ব্যবহার করুন বা Empty Activity থেকে শুরু করুন।
ধাপ ২: লেআউট (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">
<FrameLayout
android:id="@+id/settings"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
ধাপ ৩: MainActivity.java
package com.example.preferencesbutton;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new SettingsFragment())
.commit();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);
Preference button = findPreference("toastMsg");
if (button != null) {
button.setOnPreferenceClickListener(preference -> {
Toast.makeText(getActivity(), "Preference button clicked!", Toast.LENGTH_SHORT).show();
return true;
});
}
}
}
}
ধাপ ৪: Preferences XML (res/xml/root_preferences.xml)
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="https://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/messages_header">
<EditTextPreference
app:key="signature"
app:title="@string/signature_title"
app:useSimpleSummaryProvider="true" />
<ListPreference
app:defaultValue="reply"
app:entries="@array/reply_entries"
app:entryValues="@array/reply_values"
app:key="reply"
app:title="@string/reply_title"
app:useSimpleSummaryProvider="true" />
<!-- কাস্টম বাটন প্রেফারেন্স -->
<Preference
app:key="toastMsg"
app:title="Show me a Toast" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/sync_header">
<SwitchPreferenceCompat
app:key="sync"
app:title="@string/sync_title" />
<SwitchPreferenceCompat
app:dependency="sync"
app:key="attachment"
app:summaryOff="@string/attachment_summary_off"
app:summaryOn="@string/attachment_summary_on"
app:title="@string/attachment_title" />
</PreferenceCategory>
</PreferenceScreen>
ধাপ ৫: String Resources (res/values/strings.xml)
<resources>
<string name="messages_header">Messages</string>
<string name="signature_title">Signature</string>
<string name="reply_title">Default reply action</string>
<string name="sync_header">Sync</string>
<string name="sync_title">Sync automatically</string>
<string name="attachment_title">Download attachments</string>
<string name="attachment_summary_on">Attachments will be downloaded automatically</string>
<string name="attachment_summary_off">Attachments will not be downloaded automatically</string>
<string-array name="reply_entries">
<item>Reply</item>
<item>Reply all</item>
<item>Forward</item>
</string-array>
<string-array name="reply_values">
<item>reply</item>
<item>reply_all</item>
<item>forward</item>
</string-array>
</resources>
ধাপ ৬: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.preferencesbutton">
<application ...>
<activity
android:name=".MainActivity"
android:label="@string/title_activity_settings">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
গুরুত্বপূর্ণ নোট
Preferenceক্লাস ব্যবহার করে বাটন-লাইক আচরণ করা যায়setOnPreferenceClickListener-এ ক্লিক হ্যান্ডল করুনapp:keyইউনিক হতে হবে- Material Design Settings UI-তে এটি স্বাভাবিকভাবে ফিট হয়