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你说:我怎么知道选择了哪个图像(如果有的话)?使用我的解决方案,您可以获得所选图像的地址。你还需要什么?