Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android PreferenceFragment从Intent获取结果_Android_Android Intent_Preferences - Fatal编程技术网

Android PreferenceFragment从Intent获取结果

Android PreferenceFragment从Intent获取结果,android,android-intent,preferences,Android,Android Intent,Preferences,我创建了一个PreferenceFragment,用于加载xml文件。在xml中有一个启动图像选择器的intent项。意图如下所示: <PreferenceCategory android:title="Your Details"> <Preference android:title="Your picture" > <intent android:action="android.intent.action.PICK"

我创建了一个
PreferenceFragment
,用于加载
xml
文件。在
xml
中有一个启动图像选择器的
intent
项。
意图如下所示:

<PreferenceCategory
    android:title="Your Details">

    <Preference android:title="Your picture" >
        <intent android:action="android.intent.action.PICK"
            android:mimeType="image/*"
            />
    </Preference>

</PreferenceCategory>

这可以很好地显示选择器,并允许我进行选择,然后返回设置

我的问题是-如何找出选择了哪个图像(如果有的话)


到目前为止,我找到的所有示例似乎都只是演示了用于查看某个内容的
意图。使用此方法是否确实可以获得结果?

我没有使用xml创建意图,因此我使用事件侦听器启动选择器。这是我的密码:

public class AccountFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener {

    static final int PICK_AVATAR_REQUEST_CODE = 1000;
    static final String AVATAR_KEY = "avatar_key";


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.account_preferences);

        Preference avatar = findPreference(AVATAR_KEY);
        avatar.setOnPreferenceClickListener(this);
    }

    @Override
    public boolean onPreferenceClick(Preference preference) {
        if(preference.getKey().equals(AVATAR_KEY)){
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("image/*");
            startActivityForResult(intent, PICK_AVATAR_REQUEST_CODE);
            return true;
        }
        return false;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == PICK_AVATAR_REQUEST_CODE){
            /**
             * You have to call the getData or getDataString to get the images address
             */
            Log.i("CCC", data.getDataString());
        }
    }
}
但在创建xml时,文档也会给出答案:


享受。

即使没有
xml
行:
,这也很好用。只需要
标题
。但是我仍然不确定xml的用途是什么。@ChrisRead你说:我怎么知道选择了哪个图像(如果有的话)?使用我的解决方案,您可以获得所选图像的地址。你还需要什么?