কম্পিউটার টিউটোরিয়াল

Android PreferenceScreen-এ বাটন যোগ করার পদ্ধতি

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-তে এটি স্বাভাবিকভাবে ফিট হয়
  1. অ্যান্ড্রয়েড অ্যাপে TextToSpeech তৈরি করার পদ্ধতি

  2. Facebook-এ Android অ্যাপ তৈরি করার পদ্ধতি

  3. অ্যান্ড্রয়েড অ্যাপে ক্যালেন্ডার ইভেন্ট যোগ করার পদ্ধতি

  4. Android Studio-এ JAR ফাইল লাইব্রেরি হিসেবে যোগ করার পদ্ধতি