【问题标题】:file chooser intent opened from preferences从首选项打开的文件选择器意图
【发布时间】:2012-09-09 13:23:26
【问题描述】:

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

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

【问题讨论】:

    标签: android preference


    【解决方案1】:

    [已编辑] 首先在您的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();
    }
    

    【讨论】:

    • 我猜应该可以。我希望避免定制任何东西,但这看起来还不错。谢谢。
    • 是否可以在 XML 中定义这样的 Intent?
    猜你喜欢
    • 2012-02-02
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多