PreferenceActivityからIntentを呼び出す
|アプリケーションの設定画面の作成時に、設定項目の中で別画面を呼び出したい時など、
PreferenceActivityの内部でIntentを使用したいケースがあると思います。
本エントリでは、PreferenceActivityからIntentを呼び出す方法を紹介します。
過去にTechBoosterでは、PreferenceActivityの使用方法を以下エントリで紹介しています。
PreferenceActivityからIntentを呼び出す方法は、設定画面を簡単に作るのエントリでも少し触れていますが、
本エントリでは、
1.onPreferenceClickメソッドを使用したIntent呼び出し
2.XML内部でのIntent呼び出し
cf. PreferenceCategoryについて
の2種のIntent呼び出しとPrefereneCategoryについて、紹介していきます。
1.onPreferenceClickメソッドを使用したIntent呼び出し
特定のPreferenceを押下した際にIntentを呼び出すために、onClickメソッドを登録します。
PreferenceにはPreferenceScreenを登録し、KeyやTitleをセットしています。(preference.xml Line:4 5)
preference.xml
1 2 3 4 5 6 7 8 | <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="PreferenceCategory - 1"> <PreferenceScreen android:summary="ソースコードのIntentから" android:title="Move Next Activity1" android:key="preferenceKey1"> </PreferenceScreen> </PreferenceCategory> </PreferenceScreen> |
上記のXMLをPreferenceActivityで読み出し、表示しています。(PreferenceCustomSample.java Line:3)
XMLにより設定したkeyから、PrefereneScreenのインスタンスを取得し、onPreferenceClickListenerを設定しています。
onPreferenceClickにおいて、Intentを呼び出すことで画面遷移を実現しています。(PreferenceCustomSample.java Line:9〜)
PreferenceCustomSample.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preference); // PreferenceScreenからのIntent PreferenceScreen nextMove1 = (PreferenceScreen) findPreference("preferenceKey1"); nextMove1.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { // Activityの遷移 Intent nextActivity = new Intent( PreferenceCustomSampleActivity. this , org.jpn.techbooster.PreferenceSample2.Sample2Activity. class ); startActivity(nextActivity); return true ; } }); } |
2.XML内部でのIntent呼び出し
1であげた方法のほかに、XML内部でIntentを書き込む方法があります。
PreferenceScreenを登録し、その内部でIntentタグを記述します。(preference.xml Line:6〜)
XMLへの記述になるため、静的になってしまいますが、Javaソースコードを記述する必要がないため、
ソースコードをきれいに見せる事が可能です。
preference.xml
1 2 3 4 5 6 7 8 9 10 11 | (...略...) <PreferenceCategory android:title="PreferenceCategory - 2"> <PreferenceScreen android:title="Move Next Activity2" android:summary="Preference.xmlのIntentから" android:key="preferenceKey2"> <intent android:action="android.intent.action.VIEW" android:targetPackage="org.jpn.techbooster.PreferenceSample2" android:targetClass="org.jpn.techbooster.PreferenceSample2.Sample2Activity" /> </PreferenceScreen> </PreferenceCategory> (...略...) |
cf. PreferenceCategoryについて
PreferenceActivityで作成した設定画面では、カテゴリーごとにタイトルを入れることができます。
(以下図、赤枠部分)
カテゴリーはPreferenceCategoryタグで囲んだ部分に適用され、表示されます。
1 2 3 4 5 6 7 8 | <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="PreferenceCategory - 1"> <.......ひとつめの設定カテゴリー> </PreferenceCategory> <PreferenceCategory android:title="PreferenceCategory - 2"> <.......ふたつめの設定カテゴリー> </PreferenceCategory> </PreferenceScreen> |