facebook twitter hatena line email

Android/PreferenceActivityでonClick共通処理

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

prefrence設定画面でイベント

  • src/info.nonip.android.helloworld1.LiveWallpaperPreference.java
package info.nonip.android.helloworld1;
import info.nonip.android.helloworld.R;
import android.preference.Preference.OnPreferenceClickListener;
import android.content.Context;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;

public class LiveWallpaperPreference extends PreferenceActivity {
    // リンクキー
    private static String SETTING_LINK_KEY = "setting_link_key";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.wallpaperpref);
        // リンクプリファレンス取得
        PreferenceScreen preference = (PreferenceScreen)getPreferenceScreen().findPreference(SETTING_LINK_KEY);
        // リンククリックイベント追加
        preference.setOnPreferenceClickListener(new LinkOnPreference(getApplicationContext()));
    }
    // リンクイベントクラス
    private class LinkOnPreference extends AbstractOnPreference implements OnPreferenceClickListener {
        // construct
        public LinkOnPreference(Context context) {
            super(context);
        }
        // クリックイベント
        public boolean onPreferenceClick(Preference preference) {
            // 処理
            return true;
        }
    }
    // 基底イベントクラス
    protected abstract class AbstractOnPreference {
        protected Context mContext;
        protected AbstractOnPreference(Context context) {
            mContext = context;
        }
    }
}
  • res/xml/pref.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:title="設定"
    <PreferenceScreen
        android:key="setting_link_key"
        android:title="link_title"
        android:summary="link_summary"
        >
    </PreferenceScreen>
</PreferenceScreen>