文件选择器意图从首选项打开

时间:2012-09-09 13:23:26

标签: android preference

我正在尝试学习设置UI构建,我在android文档中看到偏好可以是一个Intent,但我现在想知道的是,Intent是否可以返回一个偏好值(例如由启动文件选择器活动)?

或者,如果我想在我的首选项设置中选择文件或目录名称,是否需要构建自定义首选项视图?在任何地方有任何方便的例子吗? (似乎人们会对我做很多事情)。

1 个答案:

答案 0 :(得分:9)

[EDITED] 首先在preference.xml文件中创建首选项

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <Preference
            android:title="Pick file"
            android:key="filePicker" 
    />
</PreferenceScreen>

现在在偏好活动中执行以下操作

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    Preference filePicker = (Preference) findPreference("filePicker");
    filePicker.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
        @Override
        public boolean onPreferenceClick(Preference preference) {
            Intent intent = new Intent(......); //Intent to start openIntents File Manager
            startActivityForResult(intent, requestMode);
            return true;
        }
    });
}

现在覆盖首选项活动中的onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //get the new value from Intent data
    String newValue = ....;
    SharedPreferences preferences = ......;
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("filePicker", newValue);
    editor.commit();
}