Android PreferenceFragment 从 Intent 获取结果
Android PreferenceFragment Get Result From Intent
我创建了一个 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>
这在显示选择器并允许我做出选择然后 return 到设置时效果很好。
我的问题是 - 如何找出选择了哪张图片(如果有)?
到目前为止我找到的所有示例似乎都只是在演示 intent
用于查看某些内容。用这个方法真的可以得到结果吗?
我没有使用 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 文档时也会给出答案:
尽情享受吧。
我创建了一个 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>
这在显示选择器并允许我做出选择然后 return 到设置时效果很好。
我的问题是 - 如何找出选择了哪张图片(如果有)?
到目前为止我找到的所有示例似乎都只是在演示 intent
用于查看某些内容。用这个方法真的可以得到结果吗?
我没有使用 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 文档时也会给出答案:
尽情享受吧。