preferenceスクリーンを作る
Creating a Preference Screen
ユーザの優先権をロード・セーブするで
Androidアプリケーションの中からキー/値のペアを保存するために
SharedPreferencesオブジェクトを使う方法を示しました。
もし開発者がユーザにそれらデータの値を直接編集させたいとしたら、
prefertenceアクティビティが使えます。
Sharedpreferencesオブジェクトに保存するためにキー/値ペアを
プログラム的に作っていく代わりに、XMLファイルにいろんなキーを
定義できます。このフォルダの中で、XMLファイルを作り、
myapppreferences.xmlのように何か意味あるものにそのファイルを
名づけます。名付けたXMLファイルは以下のように設定します。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
<PreferenceCategry android:title="Category 1" >
<CheckBoxPreference
android:defaultValue="false"
android:key="checkboxPref"
android:summary="True or False"
android:title="Checkbox" />
</PreferenceCategory>
<PreferenceCategory android:title="Category 2" >
<EditTextPreference
android:defaultValue~"[Enter a string here]"
android:key="editTextPref"
android:summary="Enter a string"
android:title="Edit Text" />
<RingtonePreference
android:key="ringtonePref"
android:summary="Select a ringtone"
android:title="Ringtone" />
<PreferenceScreen
android:key="secondPrefScreenPref"
android:summary="Click here to go to the second Preference Screen"
android:title="Second Preference Screen" >
<EditTextPreference
android:key="secondEditTextPref"
android:summary="Enter a string"
android:title="Edit Text(second Screen)" />
</PreferenceScreen>
</PreferenceCategory>
</PreferenceSccreen>
開発するプロジェクトのパッケージ内では、新しいJavaクラスファイルを
加え、AppPreferenceActivity.javaと名づけます。
AppPreferenceActivity.javaファイルの設定は以下のようにします。
package net.learn2develop.preferencescreens;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class AppPreferenceActivity extends PreferenceActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//---load the preferences from an XML file---
addPreferencesFromResource(R.xml.myapppreferences);
}
}
AppPreferenceActivityクラスはPreferenceActivity基底クラスの
拡張であることに気づくでしょう。このAppPreferenceActivityクラスを
作ったときに、そのクラスはaddPreferenceFromResource()メソッドを
myapppreferences.xmlファイルから優先キーをロードするために
使います。
AppPreferenceActivityクラスを呼び出せる様にするためには、
AndroidManifest.xmlファイルにAppPreferenceActivityクラスを
宣言する必要があります。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.learn2develop.preferencescreens"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="./MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AppPreferenceActivity"
android:lavel="@string/app_name" >
<intent-filter>
<action android:name="net.learn2develop.AppPreferenceActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<activity>
/application>
<maifest>
AppPreferenceActivityクラスを表示するためには、
以下のようにIntentオブジェクトを使います。
package net.learn2develop.preferencescreens;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i = new Intent("ner.learn2develop.AppPreferenceActivity");
startActivity(i);
}
}
キー/値のペアは/data/data/<パッケージ名>/shared_prefs
フォルダに保存され、<パッケージ名>_preferences.xmlと
名付けられます。
優先ファイルに保存されたキー/値のペアをプログラム的に検索するには、
ユーザの優先権をロード・セーブするで
示したgetSharedPreferences()メソッドを使います。
package net.learn2develop.preferencescreens;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
Intent i = new Intent(net.learn2develop.AppPreferenceActivity");
startActivity(i);
*/
SharedPreferences appPrefs = getSharedPreferences(
"net.learn2develop.preferenceScreens_preferences", MODE_PRIVATE);
Toast.makeText(getBaseContext(), appPrefs.getString(#editTextPref",""),
Toast.LENGTH_LONG).show();
}
}
もし優先ファイルの初期設定名を変更したい場合は、
PreferenceManagerクラスを使えて、setSharedPreferencesName()
を使い、メソッドを名づけたい名前にセットします。
package net.learn2develop.preferencescreens;
import android.os.Bundle;
import android.preference.preferenceActivity;
import android.preference.PreferenceManager;
public class AppPreferenceActivity extends PreferenceActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
PreferenceManager prefMgr = getPreferenceManager();
prefMgr.setSharedPreferencesName("appPreferences");
//---load the preferences from an XML file---
addPreferencesFromResource(R.xml.myapppreferences);
}
}
上のコードはappPreferences.xmlとして優先ファイルをセットします。
shared_prefsフォルダを再度見ることでこれを確認できます。
今回は、appPreferences.xmlファイルが作られました。
新しく作られた優先ファイルをプログラム的に検索するには、
変更した名前をgetSharedPreferences()メソッドに適切に
渡させます。
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
Intent i = new Intent("net.learn2develop.AppPreferenceActivity");
startActivity;
*/
/*
Sharedpreferences appPrefs = getSharedPreferences(
"net.learn2develop.PreferenceScreens_preferences",MODE_PRIVATE");
*/
SharedPreferences appPrefs = getSharedPreferences(
"appPreferences", MODE_PRIVATE);
Toast.makeText(getBaseContext(),appPrefs.getString("editTextPref", ""),
Toast.LENGTH_LONG).show();
}
|
【用語解説】
XML
HTMLと同じような言語ですが、
すべての型の複雑なデータ構造を
送信するための設計ができる
ファイル型式。
オブジェクト
ある手続きを持った
データアイテムで、
他の手続きと関連づけされるもの
metaタグ
ウェブページに与える
情報の宣言につかわれ
検索エンジン・ウェブアプリ
などにウェブページの内容を
伝える役目をする。
metaタグの内容は
ページ内に表示されない。
コンストラクタ
オブジェクト指向
プログラミングで使われ
新しいオブジェクトが
作られ時に呼び出される
メソッドのこと。
クラス
オブジェクト指向
プログラミングでの
オブジェクトの型
オブジェクト指向プログラミング
プログラミングの
方式のことで、
プログラマはデータ型を
定義できるだけでなく
自動的にデータ型と
メソッドを関連付け
できる
アクティビティ
Androidにおける
アクティビティは
Androidアプリの画面に
相当するもの
ボタンやウェブページ
など表示されている
すべてのもののこと。
view
Androidのアプリを開発する
上で使う部品のことで、
トリガボタン・イメージボタン
チェックボックスなどのこと。
UI
ユーザインターフェースのこと。
Bind(バインド)
シンボルとデータを
関連させるため
または、データの一片と
他のものを関連させること。
以下は例。
・変数に値を入れる。
(変数の初期化)
・特定のEthernetポートと
ネットワークプロトコルを
関連付けする。
・Javaの変数のセット上に
XML文書を配置すること。
または、ほかの
プログラミング言語でも。
|