Androidアプリの設定

Androidの開発のトピックに興味があります。 私は小さなアプリケーションを書いています。 アプリケーションの設定方法を完全に理解していないという事実に直面しました。 少しグーグルで、それを理解するのに役立つ記事を見つけました。 私は、ロシア語を話すコミュニティ向けに、オリジナルに関するいくつかのコメントを含む記事を翻訳することにしました。



設定はAndroidのアプリケーションの重要な部分です Android だけでなく、以下では翻訳者のメモ) 。 ユーザーが好みに応じてアプリケーション設定を変更できるようにすることは非常に重要です。



Androidの設定を操作する方法は2つあります。res/ xmlディレクトリにpreference.xmlファイルを作成するか、コードから設定を操作できます。 この記事では、 preferences.xmlファイルを使用して設定を操作する方法を示します。







設定項目には次の属性があります。





現在、次の種類の設定項目を使用できます。





設定画面



EditTextPreference



リスト設定



着信音設定



設定画面







上記のスクリーンショットは、次のpreferences.xmlを使用して生成されました。



<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="First Category"> <CheckBoxPreference android:title="Checkbox Preference" android:defaultValue="false" android:summary="This preference can be true or false" android:key="checkboxPref" /> <ListPreference android:title="List Preference" android:summary="This preference allows to select an item in a array" android:key="listPref" android:defaultValue="digiGreen" android:entries="@array/listArray" android:entryValues="@array/listValues" /> </PreferenceCategory> <PreferenceCategory android:title="Second Category"> <EditTextPreference android:name="EditText Preference" android:summary="This allows you to enter a string" android:defaultValue="Nothing" android:title="Edit This Text" android:key="editTextPref" /> <RingtonePreference android:name="Ringtone Preference" android:summary="Select a ringtone" android:title="Ringtones" android:key="ringtonePref" /> <PreferenceScreen android:key="SecondPrefScreen" android:title="Second PreferenceScreen" android:summary="This is a second PreferenceScreen"> <EditTextPreference android:name="An other EditText Preference" android:summary="This is a preference in the second PreferenceScreen" android:title="Edit text" android:key="SecondEditTextPref" /> </PreferenceScreen> <Preference android:title="Custom Preference" android:summary="This works almost like a button" android:key="customPref" /> </PreferenceCategory> </PreferenceScreen>
      
      







ListPreferenceandroid:entriesおよびandroid:entryValues属性は、それぞれ@ array / listArrayおよび@ array / listValuesを参照します。 値はres / values / array.xmlから取得されます。この場合、これは次のようになります。



 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="listArray"> <item>Number 1</item> <item>Number 2</item> <item>Number 3</item> <item>Number 4</item> </string-array> <string-array name="listValues"> <item>1</item> <item>2</item> <item>3</item> <item>4</item> </string-array> </resources>
      
      







ユーザーに設定画面を表示するには、PreferenceActivityから継承したアクティビティを作成する必要があります。 アクティビティの例:



 package org.kaloer.preferenceexample; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.Preference.OnPreferenceClickListener; import android.widget.Toast; public class Preferences extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); // Get the custom preference Preference customPref = (Preference) findPreference("customPref"); customPref .setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { Toast.makeText(getBaseContext(), "The custom preference has been clicked", Toast.LENGTH_LONG).show(); SharedPreferences customSharedPreference = getSharedPreferences( "myCustomSharedPrefs", Activity.MODE_PRIVATE); SharedPreferences.Editor editor = customSharedPreference .edit(); editor.putString("myCustomPref", "The preference has been clicked"); editor.commit(); return true; } }); } }
      
      







そして、メインアクティビティのボタンをクリックして、設定を使用してアクティビティを呼び出すことができます。



  @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button prefBtn = (Button) findViewById(R.id.prefButton); prefBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent settingsActivity = new Intent(getBaseContext(), Preferences.class); startActivity(settingsActivity); } }); }
      
      







設定で設定された値を使用するには、 getStart()メソッドをメインアクティビティに追加します。これは、 onStart()イベントで呼び出す必要があります。 glanoyアクティビティの作成時の設定ではなく、現在の設定が使用されることを確認するために、 onCreate()ではなくonStart()を使用する必要があります。 getPrefs()メソッドは次のようになります。



  boolean CheckboxPreference; String ListPreference; String editTextPreference; String ringtonePreference; String secondEditTextPreference; String customPref; private void getPrefs() { // Get the xml/preferences.xml preferences SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getBaseContext()); CheckboxPreference = prefs.getBoolean("checkboxPref", true); ListPreference = prefs.getString("listPref", "nr1"); editTextPreference = prefs.getString("editTextPref", "Nothing has been entered"); ringtonePreference = prefs.getString("ringtonePref", "DEFAULT_RINGTONE_URI"); secondEditTextPreference = prefs.getString("SecondEditTextPref", "Nothing has been entered"); // Get the custom preference SharedPreferences mySharedPreferences = getSharedPreferences( "myCustomSharedPrefs", Activity.MODE_PRIVATE); customPref = mySharedPreferences.getString("myCusomPref", ""); }
      
      







最後に、作成したアクティビティをandroidmanifest.xmlの設定で追加し、「set_preferences」という名前の新しい行を追加して、「Preferences」などの設定画面のタイトルを示すことを忘れないでください。



 <activity android:name=".Preferences" android:label="@string/set_preferences"> </activity>
      
      







その結果、次の結果が得られます。

メインアクティビティ画面



設定があるアクティビティ






All Articles