2015-07-21 194 views
0

我正在使用PreferenceActivity和PreferenceFragment開發我的應用程序的設置,我是新手,並且發現有一個自定義首選項有問題。Android自定義首選項

ImagePreference是一個首選項,顯示用戶配置文件圖像,問題是如果我從我的圖庫中選擇一個圖像,然後選中/取消選中其中一個ChecboxPreferences,圖像將變爲第一個,因爲我從來沒有選擇一個新的圖像。

SettingsFragment

public class SettingsFragment extends PreferenceFragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Load the preferences from an XML resource 
     addPreferencesFromResource(R.xml.preferences); 

     imagePreference = (ImagePreference) findPreference("cambiar_foto"); 
     imagePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
      @Override 
      public boolean onPreferenceClick(Preference preference) { 
       Intent GaleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
       startActivityForResult(GaleryIntent, 0); 
       return true; 
      } 
     }); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 

     super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode == 0){ 
      if (resultCode == Activity.RESULT_OK && null != data) { 
       ...  
       mProfileImage = (ImageView) getActivity().findViewById(R.id.iv_ic_foto); 
       mProfileImage.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
       Toast.makeText(getActivity(), picturePath, Toast.LENGTH_SHORT).show(); 

      } 
     } 

    } 

} 

的preferences.xml

<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <...> 
    <PreferenceCategory 
     android:title="Cambiar o agregar foto"> 
     <com.zonaapp.taxis.demo.preferences.ImagePreference 
      android:key="cambiar_foto"/> 
    <PreferenceCategory 
     android:title="Cobertura de información"> 

     <CheckBoxPreference 
      android:key="parent_checkbox_preference" 
      android:title="Mi ciudad"/> 

     <CheckBoxPreference 
      android:key="parent_checkbox_preference" 
      android:title="Mi país"/> 

     <CheckBoxPreference 
      android:key="parent_checkbox_preference" 
      android:title="Todos"/> 

    </PreferenceCategory> 
    <...> 
</PreferenceScreen> 

定製愛好級別:

public class ImagePreference extends Preference { 

    private Context mContext; 

    public ImagePreference(Context context) { 
     super(context); 
     mContext = context; 
    } 

    public ImagePreference(Context context, AttributeSet attributeSet){ 
     super(context, attributeSet); 
     mContext = context; 
    } 

    public ImagePreference(Context context, AttributeSet attributeSet, int defStyle){ 
     super(context, attributeSet, defStyle); 
     mContext = context; 
    } 

    public View getView(View convertView, ViewGroup parent){ 
     View row = convertView; 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.preference_screen_cambiar_foto, parent, false); 
     } 

     ImageView imageView = (ImageView) row.findViewById(R.id.iv_ic_foto); 
     Picasso.with(mContext).load(ParseUser.getCurrentUser().getParseFile("profilePic").getUrl()).into(imageView); 

     return row; 
    } 
} 

回答