2016-04-23 20 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'の意図が何であるかまだ分かりません。 –

+0

@Chrisあなたは言った:**どの画像(もしあれば)が選ばれたかを知るにはどうすればいいですか?**私のソリューションでは、選択した画像のアドレスを取得できます。他に何か要りますか? – Robert

関連する問題