facebook twitter hatena line email

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

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
 
(同じ利用者による、間の1版が非表示)
行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日 (木) 12:04時点における最新版

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>