facebook twitter hatena line email

「Android/PreferenceActivityでonClick共通処理」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(Admin がページ「Android/PreferenceActivityでonClick」を「Android/PreferenceActivityでonClick共通処理」に、リダイレクトを残さずに移動しました)
(相違点なし)

2018年12月6日 (木) 12:03時点における版

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>

シンプルに書くならこちら

PreferenceScreen preference = (PreferenceScreen)getPreferenceScreen().findPreference("key1");
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
	public boolean onPreferenceClick(Preference preference) {
                // ここに処理
		Intent intent = new Intent(getApplicationContext(), SampleActivity.class);
		startActivity(intent);
		return true;
	}
});