PreferenceFragment中的文件选择器对话框

时间:2014-02-05 12:13:15

标签: java android

我想在PreferenceActivity中获取一个选择文件对话框,我该怎么做?我可以以某种方式覆盖onClick for PreferenceActivity吗? Android API 14.

这是我的PreferensActivity:

    import android.preference.PreferenceActivity;
    import java.util.List;
public class SettingsActivity extends PreferenceActivity {

@Override
public boolean onIsMultiPane() {
    return true;
}

public void onBuildHeaders(List<Header> target) {
        loadHeadersFromResource(R.xml.pref_head, target);
    }
}

标题xml是:

    <?xml version="1.0" encoding="utf-8"?>
<preference-headers
xmlns:android="http://schemas.android.com/apk/res/android">
<header
    android:fragment="com.bfx.rfid.FragmentSetApp"
    android:icon="@android:drawable/ic_menu_call"
    android:title="Application"
    android:summary="Application settings">
</header>
<header
    android:fragment="com.bfx.rfid.FragmentSetConnection"
    android:icon="@android:drawable/ic_menu_call"
    android:title="Connectivity"
    android:summary="Connection settings">
</header>
</preference-headers>

PreferenceFragment类:

import android.os.Bundle;
import android.preference.PreferenceFragment;

public class FragmentSetApp extends PreferenceFragment {

public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.fragment_set_app);
  }
}

PreferenceFragment xml是:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
    android:key="work_directory"
    android:title="Folder to work with">
</Preference>
<PreferenceCategory
    android:title="Work with a database file">
    <CheckBoxPreference
        android:key="DB_default"
        android:summary="Choose a default database file or pick one"
        android:title="Choose a database file"
        android:defaultValue="true"/>
    <EditTextPreference
        android:key="DB_URI"
        android:title="Database file"
        android:dependency="DB_default">
    </EditTextPreference>
</PreferenceCategory>
</PreferenceScreen>

1 个答案:

答案 0 :(得分:3)

我不认为Andorid有一个原生文件选择器,所以你必须自己实现一个,或者找一个库。

然后,您可以使用PreferenceFragment.xml中的android:onClick属性:

<EditTextPreference
    android:key="DB_URI"
    android:title="Database file"
    android:onClick="startFileChooser"
    android:dependency="DB_default"> 

并将其放入PreferenceFragment:

public void startFileChooser(MenuItem i){
     // Start the file chooser here
}

当然,您将如何做到这取决于您决定使用哪个文件选择器。您最终可能会得到所选文件的路径,您可以将其插入到SharedPreference中。