PreferenceFragmentでクリックイベントを登録したい

このエントリーをはてなブックマークに追加

PreferenceFragmentでクリックのみの設定項目を追加したい。ということで調べてみた。

以下ソース。

import android.app.Activity;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceFragment;
import android.widget.Toast;

public class Preferences extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager()
        	.beginTransaction()
        	.replace(android.R.id.content, new PrefsFragment())
        	.commit();
    }

    public static class PrefsFragment extends PreferenceFragment {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);

            Preference preference = (Preference) findPreference("preference_key");
            preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
                public boolean onPreferenceClick(Preference preference) {
                	Toast.makeText(getActivity(), "Preferenceクリック", Toast.LENGTH_SHORT).show();
                	return true;
                }
            });
        }
    }
}

以下レイアウトファイル

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
	xmlns:android="http://schemas.android.com/apk/res/android">
	
	<PreferenceCategory android:title="設定">
	    
	    <Preference
    		android:key="preference_key"
    		android:title="Prefereceクリックのみ"
    		android:summary="Preferenceクリックで何かを処理したい" />
	    
	</PreferenceCategory>
	
</PreferenceScreen>

実行するとこんな感じ
device-2014-02-23-2100212

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です