我创建了一个加载PreferenceFragment
文件的xml
。在xml
内是一个启动图像选择器的intent
项。 intent
如下:
<PreferenceCategory
android:title="Your Details">
<Preference android:title="Your picture" >
<intent android:action="android.intent.action.PICK"
android:mimeType="image/*"
/>
</Preference>
</PreferenceCategory>
这可以很好地显示选择器并允许我做出选择,然后返回设置。
我的问题是 - 如何找出选择的图像(如果有的话)?
到目前为止,我发现的所有示例似乎只是证明intent
用于查看某些内容。实际上是否可以使用此方法获得结果?
答案 0 :(得分:1)
我没有使用xml创建intent,所以我使用事件监听器来启动Picker。这是我的代码:
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时,文档会说明答案:
享受。