Android - 首选项

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="using_categories_in_root_screen"
    android:summary="Using Preference Categories"
    android:title="Categories">

    <PreferenceCategory
        android:key="basic"
        android:title="Basic1">
        <CheckBoxPreference
            android:key="show_airline_column_pref"
            android:summary="Show Airline column"
            android:title="Airline" />

        <CheckBoxPreference
            android:key="show_departure_column_pref"
            android:summary="Show Departure column"
            android:title="Departure" />

        <CheckBoxPreference
            android:key="show_arrival_column_pref"
            android:summary="Show Arrival column"
            android:title="Arrival" />

        <CheckBoxPreference
            android:key="show_travel_column_pref"
            android:summary="Show Total Travel Time column"
            android:title="Total Travel Time" />

    </PreferenceCategory>
    <PreferenceCategory
        android:key="basic"
        android:title="Basic2">

        <ListPreference
            android:defaultValue="@string/flight_sort_option_default_value"
            android:dialogTitle="@string/dialogTitle"
            android:entries="@array/flight_sort_options"
            android:entryValues="@array/flight_sort_options_values"
            android:key="flight_sort_option_pref"
            android:summary="@string/listSummary"
            android:title="@string/listTitle">
        </ListPreference>

    </PreferenceCategory>
    <PreferenceCategory
        android:key="basic"
        android:title="Basic3">

        <EditTextPreference
            android:dialogTitle="Package Name"
            android:key="package_name_pref"
            android:summary="Set the package name for ..."
            android:title="Set package name" />
        <Preference android:key="clear_history_pref"
            android:title="Clear History" />

    </PreferenceCategory>
</PreferenceScreen>

  

 

public class SettingsPreferenceActivity extends PreferenceActivity {

    private static final String TAG = "PreferenceActivity";

    private ListPreference mListPref;
    private EditTextPreference mEditTextPref;
    private Preference mClearHistoryPref;
    private Resources mResources;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);

        mResources = getResources();

        mListPref = (ListPreference) findPreference("flight_sort_option_pref");
        mEditTextPref = (EditTextPreference) findPreference("package_name_pref");
        mClearHistoryPref = (Preference) findPreference("clear_history_pref");


        mListPref.setSummary(mListPref.getEntry());
        mEditTextPref.setSummary(mEditTextPref.getText());

        initEvent(); //首选项监听事件
    }

    private void initEvent() {

        mListPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                mListPref.setSummary(mResources.getStringArray(R.array.flight_sort_options)[Integer.parseInt(newValue.toString())]);
                return true;
            }
        });

        mEditTextPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                preference.setSummary(newValue.toString());
                return true;
            }
        });

        mClearHistoryPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {
                new AlertDialog.Builder(SettingsPreferenceActivity.this)
                        .setTitle("清除历史记录")
                        .setMessage("是否真的清除历史记录?")
                        .setPositiveButton("是", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(SettingsPreferenceActivity.this, "清除成功", Toast.LENGTH_SHORT).show();
                            }
                        }).setNegativeButton("否", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                }).create().show();
                return true;
            }
        });
    }
}

  

 

posted @ 2016-02-11 21:18  chenyizh  阅读(144)  评论(0)    收藏  举报