2016-04-23 46 views
2

我創建了一個加載xml文件的PreferenceFragment。在xml內是啓動圖像選擇器的intent項目。該intent如下:Android PreferenceFragment從意圖獲取結果

<PreferenceCategory 
    android:title="Your Details"> 

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

</PreferenceCategory> 

此作品在顯示選擇器,讓我做出選擇,然後返回到設置的罰款。

我的問題是 - 如何找出哪個圖像(如果有)被選中?

到目前爲止,我發現的所有例子似乎都只能證明intent被用於查看某些內容。實際上可以使用這種方法得到結果嗎?

回答

1

我沒有使用xml創建意圖,所以我使用事件偵聽器來啓動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:

enter image description here

享受。

+0

這工作正常,即使沒有'xml'行:''。所有需要的是'title'和'key'。但我仍然不確定使用'xml'' intent'的是什麼。 –

+0

@ChrisRead你說過:**我如何找出哪張圖片(如果有的話)被選中?**用我的解決方案,你可以得到所選圖片的地址。你還需要什麼? – Robert