Android의 간단한 응용 프로그램 (1) -Preference Fragment 응용 프로그램 설정

13942 단어 Preference
오늘은 주로 Preference Fragment를 어떻게 사용하는지 설명합니다.Preference Fragment는 기본 Shared Preferences 파일과 연결되어 있으며, Shared Preferences를 조작하기 위해 코드를 쓸 필요가 없습니다.이것은 그것의 가장 큰 용도다.
 
종류
fragment를 저장할 수 있는 주 Activity
Preference Fragment
settings 하나.xml에 설정된 변수를 저장합니다.
2. 구체적인 코드
activity 코드는 다음과 같습니다.
public class MainActivity extends Activity{





    private SharedPreferences sp;

    private OnSharedPreferenceChangeListener listener;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        // TODO Auto-generated method stub

        super.onCreate(savedInstanceState);

        getFragmentManager().beginTransaction().replace(android.R.id.content, new ConfigFragment()).commit();//  Fragment。

        sp = PreferenceManager.getDefaultSharedPreferences(this);//

        Log.d("CPACM",sp.getBoolean("autoBack", false)+ sp.getString("et1", "cpacm"));

        listener = new OnSharedPreferenceChangeListener(){//SharedPreferences      

            

            @Override

            public void onSharedPreferenceChanged(

                    SharedPreferences sharedPreferences, String key) {

                Log.d("CPACM","change");

                // TODO Auto-generated method stub

                Toast.makeText(MainActivity.this, key, Toast.LENGTH_LONG).show();// SharedPreferences       ,    toast.

            }

            

        };

        sp.registerOnSharedPreferenceChangeListener(listener);

    }

    



}

주의: Shared Preferences는 WeakHashMap에서 감청을 유지하고 있습니다.이것은 익명의 내부 클래스를 감청기로 사용할 수 없다는 것을 의미한다. 왜냐하면 현재 범위를 벗어나면 회수하는 목표가 되기 때문이다.그것은 먼저 작동하지만, 결국에는 회수되고, WeakHashMap에서 제거된 후에 작업이 중단될 것이다.클래스의 한 위치에서 감청기를 인용하면 됩니다. 클래스를 제공하는 실례도 소각되지 않습니다.
PreferenceFragment 코드는 다음과 같습니다.
public class ConfigFragment extends PreferenceFragment{



    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.settings);//

    }

}

settings.xml 파일
<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >



    <CheckBoxPreference

        android:defaultValue="true"

        android:key="autoBack"

        android:summaryOff="  "

        android:summaryOn="  "

        android:title="    " />



    <PreferenceCategory android:title="SMS   " >

        <CheckBoxPreference

            android:defaultValue="false"

            android:key="smsSilence"

            android:summaryOff="  "

            android:summaryOn="  "

            android:title="  " />



        <PreferenceScreen android:title="    " >

            <CheckBoxPreference

                android:defaultValue="true"

                android:key="cb21"

                android:summaryOff="  "

                android:summaryOn="  "

                android:title="  1" />

            <CheckBoxPreference

                android:defaultValue="true"

                android:key="cb22"

                android:summaryOff="  "

                android:summaryOn="  "

                android:title="  2" />



            <ListPreference

                android:dialogTitle="     "

                android:entries="@array/entries_list_preference"

                android:entryValues="@array/entriesvalue_list_preference"

                android:key="list1"

                android:summary="    "

                android:title="android forum" />



            <EditTextPreference

                android:defaultValue="Hello EditTextPreference"

                android:dialogTitle="    "

                android:key="et1"

                android:summary="    "

                android:title="EditTextPreference Sample" />

        </PreferenceScreen>

    </PreferenceCategory>

    <PreferenceCategory android:title="    " >

        <RingtonePreference

            android:key="rt1"

            android:summary="    "

            android:title="RingtonePreference Sample" />

    </PreferenceCategory>



</PreferenceScreen>

그 중에서android:key,SharedPreferences에 대응하는 키입니다.
arrays.xml의 값:
<?xml version="1.0" encoding="utf-8"?>

<resources>



    <string-array name="entries_list_preference">

        <item>www.anddev.org</item>

        <item>www.eoeandroid.com</item>

        <item>developer.android.com</item>

    </string-array>

    <string-array name="entriesvalue_list_preference">

        <item>1</item>

        <item>2</item>

        <item>3</item>

    </string-array>



</resources>

좋은 웹페이지 즐겨찾기