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...」)
 
行55: 行55:
 
     </PreferenceScreen>
 
     </PreferenceScreen>
 
  </PreferenceScreen>
 
  </PreferenceScreen>
 +
 +
==シンプルに書くならこちら==
 +
<pre>
 +
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;
 +
}
 +
});
 +
</pre>

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

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;
	}
});